<?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: Miki</title>
    <description>The latest articles on DEV Community by Miki (@thejoin95).</description>
    <link>https://dev.to/thejoin95</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%2F81605%2F91191a6f-a910-4fea-9204-4d919175da1b.jpeg</url>
      <title>DEV Community: Miki</title>
      <link>https://dev.to/thejoin95</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thejoin95"/>
    <language>en</language>
    <item>
      <title>Netflix cover generator — A NuxtJS project</title>
      <dc:creator>Miki</dc:creator>
      <pubDate>Mon, 22 Feb 2021 16:59:26 +0000</pubDate>
      <link>https://dev.to/thejoin95/netflix-cover-generator-a-nuxtjs-project-58mj</link>
      <guid>https://dev.to/thejoin95/netflix-cover-generator-a-nuxtjs-project-58mj</guid>
      <description>&lt;h2&gt;
  
  
  The context
&lt;/h2&gt;

&lt;p&gt;For our podcast there was a need to speed up the YouTube cover creation process. The cover must be interesting, containing the right information and in the right format.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://www.schrodinger-hat.it/"&gt;Schrodinger Hat&lt;/a&gt; we only have one graphic designer, Francesca. For this reason we always try to overload it with requests, so as to automate the process as much as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Netflix Cover Generator?
&lt;/h2&gt;

&lt;p&gt;Well, if you don’t learn from the best who should you learn from?&lt;/p&gt;

&lt;p&gt;We really like the covers of the various TV series and movies in the Netflix catalog. The inspiration comes from their platform. The style clearly refers to that of Netflix albeit with a few changes and less details.&lt;/p&gt;

&lt;p&gt;We took as a reference the example of the Netflix title, a testing page dedicated to positioning and footprint.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the project really about?
&lt;/h2&gt;

&lt;p&gt;The project is a small application that makes a drag-n-drop editor so as to insert images and edit texts and clutter. It’s fully customizable and doesn’t require too many skills to tweak.&lt;/p&gt;

&lt;p&gt;The codebase is &lt;a href="https://nuxtjs.org/"&gt;Nuxt.js&lt;/a&gt; (VueJS framework) and &lt;a href="https://konvajs.org/"&gt;KonvaJS&lt;/a&gt;, a JS library for HTML5 canvas interpolation.&lt;/p&gt;

&lt;p&gt;The repository is available on our &lt;a href="https://github.com/Schrodinger-Hat/netflix-show-generator"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The demo is available on our &lt;a href="https://netflix.schrodinger-hat.it/"&gt;demo website&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does it work?
&lt;/h2&gt;

&lt;p&gt;Using Konva.JS we initialize a Canvas containing multiple layers, just like a Photoshop project. Each layer encloses a portion of the rendering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;background and photos&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;shade&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;headings and text&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;additional layer for additional photos / texts&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is thanks to this structure that it is possible to have a game of effects, such as the gradient in Netflix style.&lt;/p&gt;

&lt;p&gt;Nuxt handles the KonvaJS API very well and this makes development and implementation of features easy and extremely fast.&lt;/p&gt;

&lt;p&gt;The Canvas element also offers a very important property such as pixelRatio.&lt;br&gt;
This property allows us to export and save our work in high resolution for subsequent modifications or to work with particular formats.&lt;/p&gt;

&lt;p&gt;In this way the project can solve many problems.&lt;br&gt;
Obviously everything could be improved, starting from the colors that could be selectable and customizable directly during the creation of a “project”.&lt;/p&gt;

&lt;p&gt;We decided to leave it like this, as if it were a PoC, precisely because it could have interesting implications and because it is our favorite theme.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can I get it to work locally?
&lt;/h2&gt;

&lt;p&gt;The project is portable and can be released anywhere. We have chosen Netlify.&lt;br&gt;
Locally it will be enough to clone the repository from the link above, install the npm modules and start the dev server via Nuxt.&lt;/p&gt;

&lt;p&gt;In README.md you will find all the instructions :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Future implications or future implementations?
&lt;/h2&gt;

&lt;p&gt;We currently use it internally for the production of our podcast YouTube covers, but we do not hide that it could become something else in the future.&lt;/p&gt;

&lt;p&gt;We would like to create a kind of tool to speed up UI / UX testing by simply having the various components in Vue / React / * JS so as to try to render them on a canvas (a bit like if we were making a microfrontend) and verify that it is all correct in terms of design.&lt;/p&gt;

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

&lt;p&gt;The project was a lot of fun to do. KonvaJS is very intuitive and the API Reference was really useful. Downloading the YouTube cover in high resolution from this tool saved us a lot of time for each uploaded video!&lt;/p&gt;

&lt;p&gt;Our YouTube channel is: &lt;a href="https://www.youtube.com/channel/UC1QLLgrGrPmlaFhS0orykCA"&gt;https://www.youtube.com/channel/UC1QLLgrGrPmlaFhS0orykCA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The podcast is only available in Italian.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>vue</category>
      <category>nuxt</category>
      <category>netflix</category>
    </item>
    <item>
      <title>A Github Actions to upload automatically your YouTube video to Anchor.fm</title>
      <dc:creator>Miki</dc:creator>
      <pubDate>Sun, 30 Aug 2020 15:11:35 +0000</pubDate>
      <link>https://dev.to/thejoin95/a-github-actions-to-upload-automatically-your-youtube-video-to-anchor-fm-2pb6</link>
      <guid>https://dev.to/thejoin95/a-github-actions-to-upload-automatically-your-youtube-video-to-anchor-fm-2pb6</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/marketplace/actions/upload-episode-from-youtube-to-anchor-fm"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aeIrgJYT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5e6dp6xgratdvyzpqaqi.png" alt="Youtube to Anchor.fm using Github Actions"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The Github action name is: &lt;a href="https://github.com/marketplace/actions/upload-episode-from-youtube-to-anchor-fm"&gt;Upload Episode from YouTube To Anchor.Fm&lt;/a&gt; &lt;br&gt;
and it is available in the Github Actions Marketplace!&lt;/p&gt;

&lt;p&gt;We already use this action in our project called Schrodinger Hat, that is an italian live show on YouTube and a podcast on every platform (including Anchor.fm).&lt;/p&gt;

&lt;p&gt;This action will download a YouTube video, convert it in an audio file, then upload the audio file automatically to your Anchor.fm account, by setting up your Github repository secrets.&lt;/p&gt;

&lt;p&gt;The action is built by a Dockerfile over Ubuntu 18.04.&lt;br&gt;
The action is using youtube-dl, for donwloading the YouTube video, and puppeteer for the second stage (uploading to Anchor.fm).&lt;/p&gt;

&lt;p&gt;It is very useful in a scenario where you have a YouTube account and also a podcast over Spotify, Anchor.fm, Play Music, iTunes etc.&lt;/p&gt;

&lt;p&gt;Also, Anchor.fm, is not providing any APIs to let any developer integrate their platform. I'm guessing that this action will save time.&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;DIY Deployments&lt;/p&gt;
&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Schrodinger-Hat"&gt;
        Schrodinger-Hat
      &lt;/a&gt; / &lt;a href="https://github.com/Schrodinger-Hat/youtube-to-anchorfm"&gt;
        youtube-to-anchorfm
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An automation process to convert YouTube video into audio file and uploading it to Anchor.fm podcast
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Youtube to Anchor.fm - An automation tool to publish your podcast&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/Schrodinger-Hat/youtube-to-anchorfm/master/assets/img/cover.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--snzkYJG3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/Schrodinger-Hat/youtube-to-anchorfm/master/assets/img/cover.png" alt="Cover image" title="Cover image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This action will upload an audio file from a given youtube video automatically to your Anchor.fm account.&lt;/p&gt;
&lt;p&gt;It is very useful in a scenario where you have a YouTube account and also a podcast over Spotify, Anchor.fm, Play Music, iTunes etc.&lt;/p&gt;
&lt;p&gt;In our live show (Schrodinger Hat) we had this necessity. So we built it for the open source community.&lt;/p&gt;
&lt;p&gt;Every contribution it is appreciated, also a simple feedback.&lt;/p&gt;
&lt;h2&gt;
How it works&lt;/h2&gt;
&lt;p&gt;The workflow is using &lt;code&gt;youtube-dl&lt;/code&gt; library and &lt;code&gt;puppeteer&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The first one is a npm module used for donwloading the video / audio from YouTube, meanwhile Puppeteer will upload the generated file into the Anchor.fm dashboard (by loggin it).&lt;/p&gt;
&lt;p&gt;The action will start everytime you push a change on the &lt;code&gt;episode.json&lt;/code&gt; file. Into this file you need to specify the youtube id of your video.&lt;/p&gt;
&lt;p&gt;The action…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Schrodinger-Hat/youtube-to-anchorfm"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;In our live show (Schrodinger Hat) we had this necessity. So we built it for the open source community and we use this action on this &lt;a href="https://github.com/Schrodinger-Hat/youtube-to-anchorfm"&gt;repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Every contribution it is appreciated, also a simple feedback.&lt;/p&gt;

</description>
      <category>actionshackathon</category>
      <category>github</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Micro Frontends — From the 00s to 20s</title>
      <dc:creator>Miki</dc:creator>
      <pubDate>Tue, 03 Mar 2020 09:14:06 +0000</pubDate>
      <link>https://dev.to/thejoin95/micro-frontends-from-the-00s-to-20s-5a2</link>
      <guid>https://dev.to/thejoin95/micro-frontends-from-the-00s-to-20s-5a2</guid>
      <description>&lt;p&gt;Micro Front-ends do not carry any magic formula, but a lot of method, many concepts and principles that derive a lot from the architecture of the Microservices.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are Micro Front Ends?
&lt;/h3&gt;

&lt;p&gt;Micro Frontends, if a definition is necessary, should be defined as architectural concepts and principles of an application . An architectural pattern applicable also to the most critical side of a modern application: the frontend side.&lt;/p&gt;

&lt;p&gt;A goal that this pattern has, is the division of a large and complex application (with a complex UI) into many small, independent applications, each suitable for carrying out only the intended task.&lt;/p&gt;

&lt;p&gt;Each “&lt;em&gt;micro-application&lt;/em&gt;” is independent from the other and this allows us to develop, by keeping the main guidelines of the main application, also with different technology or framework.&lt;/p&gt;

&lt;p&gt;Obviously, this has its pros and cons, since then it will be necessary to maintain (also in terms of human resources) the various technologies (such as the various javascript frameworks ). This situation depends a lot on the organization of a company and frmo the project choices.&lt;/p&gt;

&lt;p&gt;A point to underline is that all these micro-apps will then be “merged” to form the main application without the end user being able to notice. For the user, everything becomes a &lt;strong&gt;Single Page Application&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Clearly a SPA can be included within a parent wireframe , to manage any application lifecycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  When do you need to use the Micro Frontend pattern?
&lt;/h3&gt;

&lt;p&gt;The implementation of Micro Frontends is an important and difficult decision to take, above all because it may be necessary to rethink some parts and concepts of an existing application to get as close as possible to the principles of the &lt;strong&gt;Domain Driven Design&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A practical example, to understand how important it is to divide the application into multiple contexts, could be this: let’s imagine that we have an administration application that manages a school.&lt;/p&gt;

&lt;p&gt;As simple as it may be, it hides various pitfalls. In fact, there are many actors involved that require various features. Just think at the pages that the application must have: staff profile, student profile, detail of subjects, electronic register, unofficial results, extra school courses and so on.&lt;/p&gt;

&lt;p&gt;As can be seen from the list above, each functionality could refer to multiple actors, but the most important thing that is glimpsed is that each page is as if it were an application in itself. Each page, when viewed separately, is complete and this is where the Micro FrontEnd pattern comes in.&lt;/p&gt;

&lt;h3&gt;
  
  
  So, why use this approach?
&lt;/h3&gt;

&lt;p&gt;There are various aspects why it would be better to use this pattern in certain situations.&lt;/p&gt;

&lt;p&gt;On large-scale projects we know all the dead times of an infinite build, or the cost of a deployment , or the &lt;strong&gt;inefficiency&lt;/strong&gt; of some components that &lt;strong&gt;sink the whole project&lt;/strong&gt; or, again, not being able to find a bug that causes a &lt;strong&gt;blocking error&lt;/strong&gt; in the &lt;strong&gt;lifecycle&lt;/strong&gt; of the entire application.&lt;/p&gt;

&lt;p&gt;Based on the basic principles of the pattern, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Decentralization&lt;/li&gt;
&lt;li&gt;  Automation&lt;/li&gt;
&lt;li&gt;  DDD&lt;/li&gt;
&lt;li&gt;  Error isolation&lt;/li&gt;
&lt;li&gt;  Independence&lt;/li&gt;
&lt;li&gt;  Agile / Lean method&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is easy to see how many &lt;strong&gt;everyday situations&lt;/strong&gt; are resolved.&lt;/p&gt;

&lt;p&gt;Each team that deals with an application will have full responsibility and independence of its functionality. You can even use a &lt;strong&gt;Continuos Delivery&lt;/strong&gt; service!&lt;/p&gt;

&lt;h3&gt;
  
  
  How can I implement the Micro Frontends pattern?
&lt;/h3&gt;

&lt;p&gt;Micro Frontends must first be studied for each use case, this is as fundamental as it is if you wanted to build a microservices architecture .&lt;/p&gt;

&lt;p&gt;There are various ways to develop this architecture and it depends on the project needs. Each portion of the application could be included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  directly from the edge , i.e. who serves everything (like a CDN) : &lt;strong&gt;Edge Server Side Include&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  processing the request on the server side, then returning everything already composed: &lt;strong&gt;Server Side Include&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  composing everything on the client side, starting from a configurator: &lt;strong&gt;Client Side Include&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a CDN, or a managed cloud server, with the chance of using the &lt;strong&gt;Edge Server Includes&lt;/strong&gt; this could really be an advantage, low maintenance cost, and with a crazy fast speed. In the real world, unfortunately, there are not many services that provide this kind of service, not even AWS.&lt;/p&gt;

&lt;p&gt;The choice of the implementation method need to be take only after careful analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;The advantages of the Micro Frontend architecture are both architectural and resource side, since each dev could change team, change stack , remaining on the same project while still maintaining an efficient entry cost on a new feature.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A tip: if you want to start implementing this pattern you will need to be very open-minded.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the next article I will analyze some case studies and some implementation. Stay tuned.&lt;/p&gt;

</description>
      <category>microfrontend</category>
      <category>frontend</category>
      <category>architecture</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
