<?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: Jimmy Kane</title>
    <description>The latest articles on DEV Community by Jimmy Kane (@liljimmyk99).</description>
    <link>https://dev.to/liljimmyk99</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F692772%2F42da8141-bf14-4537-8d0c-20541f29fd68.png</url>
      <title>DEV Community: Jimmy Kane</title>
      <link>https://dev.to/liljimmyk99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/liljimmyk99"/>
    <language>en</language>
    <item>
      <title>Making your applications run consistently with Docker</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Sat, 26 Mar 2022 19:29:35 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/making-your-applications-run-consistently-with-docker-2d5p</link>
      <guid>https://dev.to/liljimmyk99/making-your-applications-run-consistently-with-docker-2d5p</guid>
      <description>&lt;p&gt;We all have been there. You have code that runs locally on your machine just fine so you push it to version control, someone else comes along and runs your code and it doesn’t work.  It is a very frustrating position to be in, especially as a rather new programmer like myself.  This problem though isn’t always this small, sometimes code that works fine on our machines and in the development server crashes in production.&lt;/p&gt;

&lt;p&gt;To aid this problem, there is a way to package or contain your code as well as running it in a common form so it preforms the same way, no matter where it is!  This idea is called &lt;strong&gt;containerization&lt;/strong&gt; and it provides a consistent environement for code and projects to run in.  One of the most popular companies in this space is Docker.&lt;/p&gt;

&lt;h1&gt;
  
  
  Getting Started with Docker Playground &amp;amp; Tutorial
&lt;/h1&gt;

&lt;p&gt;If your familar with &lt;a href="https://go.dev/tour/welcome/1"&gt;&lt;em&gt;A Tour of GO&lt;/em&gt;&lt;/a&gt; Docker has a similar learning playground called &lt;a href="https://labs.play-with-docker.com/"&gt;Docker Playground&lt;/a&gt;.  Here you can play around with a command line and run Docker commands and containers for &lt;strong&gt;FREE&lt;/strong&gt;.   This does though require an account though I just signed in using my GitHub account.  For this tutorial we are going to be getting the &lt;a href="https://www.docker.com/101-tutorial/"&gt;Docker 101 Tutorial&lt;/a&gt; running so you have access to the documentation to begin your learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create a new Instance
&lt;/h3&gt;

&lt;p&gt;Select the &lt;code&gt;+ ADD NEW INSTANCE&lt;/code&gt; button to create a new session/instance of the Docker terminal.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rtQGrDSq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/drxissb20854oiph0l0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rtQGrDSq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/drxissb20854oiph0l0j.png" alt="Image description" width="880" height="479"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--be2mSBVo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sxe9ahlxq5c9khamiw9n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--be2mSBVo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sxe9ahlxq5c9khamiw9n.png" alt="Image description" width="880" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Run the Docker Tutorial container
&lt;/h3&gt;

&lt;p&gt;As it mentions on the labs page, click in the black terminal area next to the &lt;code&gt;$&lt;/code&gt; and paste in the following:&lt;br&gt;
&lt;code&gt;docker run -dp 80:80 docker/getting-started:pwd&lt;/code&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PwgHRSwK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3sr2qor131r0wb5a798f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PwgHRSwK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3sr2qor131r0wb5a798f.png" alt="Image description" width="880" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Open the tutorial
&lt;/h3&gt;

&lt;p&gt;You may now notice a blue 80 next to the &lt;code&gt;Open Port&lt;/code&gt; button, click this and you should have a new page open containing the Docker tutorial/&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RjWkTklQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0klm27cpu96xz7bgr9et.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RjWkTklQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0klm27cpu96xz7bgr9et.png" alt="Image description" width="880" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Understanding DockerFiles
&lt;/h1&gt;

&lt;p&gt;To create a container for a project, there needs to be a set of instructions to tell Docker how to compile and run the project.  Some services like pipelines use &lt;code&gt;.yaml&lt;/code&gt; files to do this, Docker has its own method called &lt;code&gt;DOCKERFILES&lt;/code&gt;.  An example can be found &lt;a href="https://github.com/heyMP/news-api-workshop/blob/master/server/Dockerfile"&gt;here&lt;/a&gt; and we’ll disect what the red words mean now.&lt;/p&gt;

&lt;h4&gt;
  
  
  FROM
&lt;/h4&gt;

&lt;p&gt;This is always the first command in a DockerFile and it declares what the base image of the container is.  Think of this like the OS your code needs to run in, for our example our code is a Node app, thus it runs &lt;code&gt;node:12&lt;/code&gt;.  If you want to learn more, &lt;a href="https://www.techtarget.com/searchitoperations/definition/Docker-image"&gt;here&lt;/a&gt; is an article for your viewing pleasure.&lt;/p&gt;

&lt;h4&gt;
  
  
  WORKDIR
&lt;/h4&gt;

&lt;p&gt;This establishes where your base working directory is inside of the container.  If you open up terminal or command prompt now, the base working directory is your user folder.  Image inside of your container, you are establishing where the terminal starts out.&lt;/p&gt;

&lt;h4&gt;
  
  
  COPY
&lt;/h4&gt;

&lt;p&gt;This works exactly like the &lt;code&gt;cp&lt;/code&gt; command in linux/unix.  The first parameter is file to be moved and the second parameter is where you are moving it to.  This example has two:&lt;/p&gt;

&lt;p&gt;The first copies the &lt;code&gt;package.json&lt;/code&gt; file to &lt;code&gt;/home/node/app/package.json&lt;/code&gt;&lt;br&gt;
The second command uses the &lt;code&gt;.&lt;/code&gt; which represents all files and folders in a directory.  In this line, it copies everything from the repo to the container at /&lt;code&gt;/home/node/app/.&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  RUN
&lt;/h4&gt;

&lt;p&gt;This allows you to run a command like you would in the terminal but inside of the container.  So this container will run &lt;code&gt;yarn install&lt;/code&gt; to install all dependies from &lt;code&gt;package.json&lt;/code&gt;. This triggers while the docker image is being built.&lt;/p&gt;

&lt;h4&gt;
  
  
  CMD
&lt;/h4&gt;

&lt;p&gt;This takes in array of params and when the container is run, this command is run inside of the container.  This example runs &lt;code&gt;yarn start&lt;/code&gt; which starts the Node server.  This command differs from RUN in the sense that this only runs when some runs the container, NOT while it is being built.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Vercel &amp; Eleventy</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Wed, 16 Mar 2022 23:51:58 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/vercel-eleventy-1h5d</link>
      <guid>https://dev.to/liljimmyk99/vercel-eleventy-1h5d</guid>
      <description>&lt;p&gt;# What is Vercel &amp;amp; Developer’s Experience&lt;/p&gt;

&lt;p&gt;Vercel is a Function-as-a-Service(FaaS).  Traditionally, developers would need to create CI/CD pipelines to build and then host their applications somewhere on the internet.  This pipeline would require input for the commands to compile the project, package the project as a container, load and run the container, as well as setting up the hostname and paths for the site/application.  Vercel basically takes care of that whole process for you and well “it just works”.  Vercel will create serverless AWS Lamba functions, compile and host your application, and do most of the configuration for you.&lt;/p&gt;

&lt;h1&gt;
  
  
  Deploying your first project
&lt;/h1&gt;

&lt;p&gt;For this demonstration we will be doing everything inside of the (Vercel GUI)[&lt;a href="https://vercel.com/"&gt;https://vercel.com/&lt;/a&gt;] with (this GitHub repo)[&lt;a href="https://github.com/liljimmyk99/ist-vercel-demo"&gt;https://github.com/liljimmyk99/ist-vercel-demo&lt;/a&gt;].  The thing can be accomplished by local code and the Vercel CLI.&lt;/p&gt;

&lt;p&gt;Once you have created a new account, you will want to intergrate your GitHub/GitLab account as this will automatically pull your repositiories.   When this is done, select &lt;strong&gt;&lt;em&gt;New Project&lt;/em&gt;&lt;/strong&gt; and you’ll see the following screen.  Navigate to the repositiory you’d like to deploy, in my case it is &lt;strong&gt;ist-vercel-demp&lt;/strong&gt;, and select &lt;strong&gt;&lt;em&gt;import&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C0WkNw2---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0shm8u1cmgh2xdkcyzjq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C0WkNw2---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0shm8u1cmgh2xdkcyzjq.png" alt="Image description" width="880" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are using a framework that is natively supported like Eleventy, React, Vue, or Angular just to name a few, most of these setting will be filled in for you.  Since my project is none of those, it is a web-component, I have to manually change these settings.  I know from testing this locally, my built project is in a dist folder that is created.  Thus my &lt;strong&gt;&lt;em&gt;Output Directory&lt;/em&gt;&lt;/strong&gt; must be overrided and switched.  I don’t need to change the &lt;strong&gt;&lt;em&gt;Build Command&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;Install Command&lt;/em&gt;&lt;/strong&gt; as the presets are correct for my situation.  Your situation may not use the defaults and can be overrided.  My application also has environmental variables that are required, but I can easily add them here.  When you are satisfied with the settings, you can click &lt;strong&gt;&lt;em&gt;Deploy&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HHH9SKMC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d5r0rtxsd4odji712l1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HHH9SKMC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d5r0rtxsd4odji712l1o.png" alt="Image description" width="880" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will have to wait a couple seconds/minutes for the build and deploy routines to run.  You can follow and skim through the logs as the process goes on.  On the project is complied, you click a button and it leads you to your project’s page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2yuyNQuf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uk37qx2z50rj7rhhs6sj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2yuyNQuf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uk37qx2z50rj7rhhs6sj.png" alt="Image description" width="880" height="742"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here you can see deployments of your projects, it’s domain name, the branch it used for the deployment, the logs from Build, the logs for serverless functions in the application, and domains created for the application.  Satisfied with your information, select &lt;strong&gt;&lt;em&gt;Visit&lt;/em&gt;&lt;/strong&gt; to be taken to your website!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2t0FOe51--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dwsu1wa1vakcvwhe8s1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2t0FOe51--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dwsu1wa1vakcvwhe8s1w.png" alt="Image description" width="880" height="742"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mj2ymcqd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2uefyuqoea0dbgjpl8mg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mj2ymcqd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2uefyuqoea0dbgjpl8mg.png" alt="Image description" width="880" height="742"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Other Examples
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Eleventy Hello World
&lt;/h2&gt;

&lt;p&gt;Vercel: (&lt;a href="https://11ty-hello-world-five.vercel.app/README)%5Bhttps://11ty-hello-world-five.vercel.app/README%5D"&gt;https://11ty-hello-world-five.vercel.app/README)[https://11ty-hello-world-five.vercel.app/README]&lt;/a&gt;&lt;br&gt;
GitHub: (&lt;a href="https://github.com/liljimmyk99/11ty-Hello-World)%5Bhttps://github.com/liljimmyk99/11ty-Hello-World%5D"&gt;https://github.com/liljimmyk99/11ty-Hello-World)[https://github.com/liljimmyk99/11ty-Hello-World]&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Eleventy Basic Blog
&lt;/h2&gt;

&lt;p&gt;Vercel: (&lt;a href="https://vercel.com/liljimmyk99/eleventy-basic-blog)%5Bhttps://vercel.com/liljimmyk99/eleventy-basic-blog%5D"&gt;https://vercel.com/liljimmyk99/eleventy-basic-blog)[https://vercel.com/liljimmyk99/eleventy-basic-blog]&lt;/a&gt;&lt;br&gt;
GitHub: (&lt;a href="https://github.com/liljimmyk99/eleventy-basic-blog)%5Bhttps://github.com/liljimmyk99/eleventy-basic-blog%5D"&gt;https://github.com/liljimmyk99/eleventy-basic-blog)[https://github.com/liljimmyk99/eleventy-basic-blog]&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Intro to 11ty</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Sun, 13 Mar 2022 23:11:46 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/intro-to-11ty-4ek9</link>
      <guid>https://dev.to/liljimmyk99/intro-to-11ty-4ek9</guid>
      <description>&lt;p&gt;What is 11ty?  It is a static site generator that converts markdown, Nunjuck, or JS files into HTML and CSS.  This is great for those new to web development and just want to create a site as fast as possible. &lt;/p&gt;

&lt;h1&gt;
  
  
  Hello World
&lt;/h1&gt;

&lt;p&gt;To get started, open terminal to a directory you’d like the site to exist. Enter the following commands, &lt;code&gt;touch Readme.md&lt;/code&gt; and &lt;code&gt;code .&lt;/code&gt;. This should create the a markdown file and open vs code.  To get started add a file header such as &lt;code&gt;# Hello There&lt;/code&gt; and some basic text below. like what I have here.  To generate html it takes 2 commands, &lt;code&gt;npx @11ty/eleventy&lt;/code&gt; and &lt;code&gt;npx @11ty/eleventy —serve&lt;/code&gt;.  This will generate a directory called __site white will contain html and —serve will cause a server to spin up.  Open the localhost port displayed and go to &lt;code&gt;/readme/index.html&lt;/code&gt; to see your site!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OtB6CAir--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6adchjt74d0ajc1xn8da.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OtB6CAir--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6adchjt74d0ajc1xn8da.png" alt="Image description" width="880" height="682"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yJwGHq_I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2p7fdfmzwhdt0m70v5co.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yJwGHq_I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2p7fdfmzwhdt0m70v5co.png" alt="Image description" width="880" height="682"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pnZ_vxhA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ykvqu80momwungxy7l4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pnZ_vxhA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ykvqu80momwungxy7l4.png" alt="Image description" width="880" height="682"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YQa-URKl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iy6yz16s8zwj74btvyf3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YQa-URKl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iy6yz16s8zwj74btvyf3.png" alt="Image description" width="880" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Template Blog
&lt;/h1&gt;

&lt;p&gt;Say you want a more professonal looking site without having to do a lot of extra work, you’re in luck!  11ty has a community that has created templates that are available at &lt;a href="https://www.11ty.dev/docs/starter/"&gt;this site&lt;/a&gt;.  For this example, we will use the &lt;a href="https://eleventy-base-blog.netlify.app/"&gt;eleventy-base-blog&lt;/a&gt;, make sure to go to &lt;a href="https://github.com/11ty/eleventy-base-blog"&gt;this repo&lt;/a&gt; and select the &lt;strong&gt;USE THIS TEMPLATE&lt;/strong&gt; button to make a copy of the project in your namespace.&lt;/p&gt;

&lt;p&gt;Once you have cloned and pulled the repo to your machine, open the folder in VS Code.  You want to look in the posts directory and here you is where you can add/update posts.  I decided to clear out the posts and change them with my own dev.to posts.  When ready to view the code again there are two commands to run: &lt;code&gt;npx eleventy&lt;/code&gt; and &lt;code&gt;npx eleventy —serve&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l8TMJf18--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4arz13i3zrqkxzb7um9h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l8TMJf18--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4arz13i3zrqkxzb7um9h.png" alt="Image description" width="880" height="629"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hUQNpndZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/byweaw8zbej08nov93ak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hUQNpndZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/byweaw8zbej08nov93ak.png" alt="Image description" width="880" height="629"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MEGacsha--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2iv65qhvxjyhrhtqx1zk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MEGacsha--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2iv65qhvxjyhrhtqx1zk.png" alt="Image description" width="880" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to add more files and get more creative styling!  Now that you know the basics, what are you waiting for, start coding!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;11ty Hello World Repo:&lt;/strong&gt; &lt;a href="https://github.com/liljimmyk99/11ty-Hello-World"&gt;https://github.com/liljimmyk99/11ty-Hello-World&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;11ty Hello World gh-page:&lt;/strong&gt; &lt;a href="https://liljimmyk99.github.io/11ty-Hello-World/"&gt;https://liljimmyk99.github.io/11ty-Hello-World/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;11ty Basic Blog Repo:&lt;/strong&gt; &lt;a href="https://github.com/liljimmyk99/eleventy-basic-blog"&gt;https://github.com/liljimmyk99/eleventy-basic-blog&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HAXCMS in Docker</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Sun, 16 Jan 2022 23:42:49 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/haxcms-in-docker-1n94</link>
      <guid>https://dev.to/liljimmyk99/haxcms-in-docker-1n94</guid>
      <description>&lt;h1&gt;
  
  
  What is Docker
&lt;/h1&gt;

&lt;p&gt;Docker is a platform as a service(PaaS) product that containerizes applications with only necessary dependencies. As a result, no matter what OS runs the container, it will behave the same. Using a tool such as Kubernetes allows for multiple containers and thereby instances of the same application to be deployed at once. Docker allows containers to be tagged allowed for versioning and additional metadata to be saved. In production environments, docker is used to create containers but Kubernetes is used to deploy containers.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to Install Docker for Mac
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://www.docker.com/products/docker-desktop"&gt;https://www.docker.com/products/docker-desktop&lt;/a&gt; and download Docker Desktop &lt;/li&gt;
&lt;li&gt;Move Docker Desktop to the Applications Folder&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t5I018Cm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lgsvdd3fcw6ekwl8pzzh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t5I018Cm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lgsvdd3fcw6ekwl8pzzh.png" alt="Image description" width="880" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Close the Installer&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open Docker Desktop&lt;br&gt;
     &lt;em&gt;You may get the following prompt, just select open and continue&lt;/em&gt;&lt;br&gt;
     &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LJ9W7iOm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/68qmx0g77d3acz7sxnxv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LJ9W7iOm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/68qmx0g77d3acz7sxnxv.png" alt="Image description" width="744" height="936"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Docker account and sign in.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Building an Image and Running Container
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Go the HAXCMS &lt;a href="https://github.com/elmsln/haxcms"&gt;GitHub repo&lt;/a&gt; and download it.&lt;/li&gt;
&lt;li&gt;Open VSCode to the repo or terminal and navigate to the directory&lt;/li&gt;
&lt;li&gt;Build the docker repo and name it by using the following command &lt;code&gt;docker build . -t &amp;lt;Insert Wanted Name Here&amp;gt;&lt;/code&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vrkXVX6w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lsx4xs12wdjy4krajt4b.png" alt="Image description" width="880" height="727"&gt; &lt;/li&gt;
&lt;li&gt;Run the container by using the 'docker run -dp 80:80 '&lt;/li&gt;
&lt;li&gt;Open browser to &lt;code&gt;localhost:80&lt;/code&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8G8JTRzF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5duc4ybqatt4rjpvjt1r.png" alt="Image description" width="880" height="675"&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--liX_AD9W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mhos6tmy02fh2yvbt7rw.png" alt="Image description" width="880" height="675"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  How to stop container
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open Terminal&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;docker ps&lt;/code&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UGt2zDvx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xiyo49754h6h2c2nrleb.png" alt="Image description" width="880" height="594"&gt; &lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;docker stop &amp;lt;containerID&amp;gt;&lt;/code&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L5v_8dLn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/at5vf99anpx416gyp9tf.png" alt="Image description" width="880" height="614"&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>My Possible Futures</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Sun, 07 Nov 2021 22:39:40 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/my-possible-futures-b20</link>
      <guid>https://dev.to/liljimmyk99/my-possible-futures-b20</guid>
      <description>&lt;p&gt;We all have ideas of what the future could look like. We all have ideas to make the future better. We all have dreams about what could happen. For me, I ponder what if I could do X thing. If I could build an app, website, or technology of any kind, What would it do? A little background on me, I run the Penn State College of Information Sciences and Technology Peer Tutoring program. I have been in this role for the past 3 years now and it gives me a source of great pride for me to help my fellow peers. A personal project for me would to build a college-specific tutoring video library. This service would be similar to LinkedIn Learning where a student would select a course and follow along with the modules, but the module has short videos and links going over each topic. Each topic would be explained in a few different ways to match different learning modes and provide the best possible asynchronous tutoring experience. My goal is to provide a tutoring experience to all college students regardless of whether or not they have access to an in-person tutor. Similar to how students are automatically added to their learning management system's courses, students would have access to our service the same way. Students would go to their course, select the tutoring tab, and select the topic they are struggling with.&lt;/p&gt;

&lt;p&gt;Outside of an application development lens; if money and time were of no concern; what would I do with my life and the skills I've assembled if I could dedicate it to one thing? I would create a trades school with "majors" in fields students could have a future in. These majors would be in subjects where good-paying jobs are common and may not be traditional college majors. Automotive technician, diesel technician, electrician, plumbing, programming, accounting, cyber security, among many others. The school would focus on real-world problems, experience, and building a portfolio. I feel that college inadvertently locks undecided students into believing a typical college education is the only way to go. I know it's not the case and I want a school that gives students a way to know if a trade is their favorite career path or college. I probably can say if I went to this type of school, I don't know if I would be a programmer since I love to work with my hands. If I can make anyone's career choice easier than mine, I would be fulfilled professionally!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>&lt;Slot&gt; in LitElement</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Mon, 25 Oct 2021 00:31:47 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/in-litelement-1h2j</link>
      <guid>https://dev.to/liljimmyk99/in-litelement-1h2j</guid>
      <description>&lt;p&gt;When designing new web components, the goal is to keep them as abstract as possible so that they can be used over and over again.&amp;nbsp; If web components are made specifically for a given project and need something similar for another, you'll just be coping the same exact code over and over again.&amp;nbsp; That would violate the DRY coding principal or simply put "Don't Repeat Yourself".&lt;br&gt;
&amp;nbsp;&lt;br&gt;
In a previous post, I talked about how I am developing a card like the one below.&amp;nbsp; One of the assignment criteria is to have 4 components: the entire card itself, a scaffold of the card, the icon, and banner.&amp;nbsp; To keep the card dynamic, all text fields and the icon can be set thanks to slots and I will show you how we have done that thus far.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aI9LxOoJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9blsybkbunrfobcjq3ck.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aI9LxOoJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9blsybkbunrfobcjq3ck.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hq49-Axj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/heu5ubplqxfp7jxo8u9c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hq49-Axj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/heu5ubplqxfp7jxo8u9c.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;br&gt;
Lets start with the inner most component the Learning-Icon.&amp;nbsp; This is a relatively simple component as it will display a different a SVG based on the type attribute passed into it.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rgvAHOXB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yvrrfl0og46x44352o8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rgvAHOXB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yvrrfl0og46x44352o8t.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;br&gt;
The Learning-Icon is then used within the Learning-Banner but say that I later create an Icon called Quiz-Icon.&amp;nbsp; If I hardcoded in the Learning-Icon the banner will be tied to just the learning card.&amp;nbsp; To add this flexibility I made use of the  tag and named it "icon".&amp;nbsp; Same thing applies to the headings, to keep the styling and content of them open to the user I also used slots and gave them names.&amp;nbsp; You do not need to name your slots, if you don't, it will fill slots in the order you pass them in.&amp;nbsp; However it just takes an extra attribute just to ensure that slots and their values are paired correctly; so why not do it.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S4jO-bEu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/80lvqm5x1t0lgaosvvye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S4jO-bEu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/80lvqm5x1t0lgaosvvye.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;br&gt;
As mentioned above say I want to have a Math-Card or a Computer-Card, they are both basically the same.&amp;nbsp; They both will have a header of some kind, and some sort of content, thus we will create a template with some base styling and framework.&amp;nbsp; I called this Learning-Scaffold as we plan to this card used in a learning context.&amp;nbsp; This card has two named slots, one for the banner and the other for the content.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fFt_EuW2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fxrvklkxjoghmnxxn9v4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFt_EuW2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fxrvklkxjoghmnxxn9v4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;br&gt;
Now bringing it all together we define a Learning-Card which implements a Learning-Scaffold.&amp;nbsp; From here I define all of these components and all of their slots.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ycPkBdLk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wurm67xuwshwrv99hv1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ycPkBdLk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wurm67xuwshwrv99hv1u.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Considerations when building a Web-Component</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Sun, 10 Oct 2021 22:05:44 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/considerations-when-building-a-web-component-f0m</link>
      <guid>https://dev.to/liljimmyk99/considerations-when-building-a-web-component-f0m</guid>
      <description>&lt;p&gt;So you are considering making a web component for a project, what should you consider before you code a single line? How should much you consider making the component specific to the application or general?&amp;nbsp; In this post, I will go over my team's design considerations for a display card component we are developing for class.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Our card should look like the card below and it will be used in online-course websites for Math or Science courses.&amp;nbsp; Each card regardless of type has two titles, an icon, and a large section meant to put bulleted text.&amp;nbsp; When deciding how to attack this project we asked a series of questions: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are the characteristics of the card?&lt;/li&gt;
&lt;li&gt;What design considerations must we take into account?&lt;/li&gt;
&lt;li&gt;What accessibility concerns do we potentially have?&lt;/li&gt;
&lt;li&gt;What security concerns do we potentially have?&lt;/li&gt;
&lt;li&gt;What "states" does this card have?&lt;/li&gt;
&lt;li&gt;What do we call it?&lt;/li&gt;
&lt;li&gt;Do we have room for additional reusable atoms to be produced?
&amp;nbsp;
Let's go and answer some of these questions.&amp;nbsp; I broke it down already but we have a header and sub-header text, an icon, a content area for a bulleted list, and a colorized banner in the header.&amp;nbsp;&amp;nbsp; Looking at the example card it is possible to imagine someone may have a long title or have a smaller icon or several other exceptions.&amp;nbsp; In general, we must consider scaling of text for the header and list; the color of the banner based on content, changeable icons, and consistency of the margins and padding just to name a few.&amp;nbsp; When it comes to accessibility we need to ensure that the text inside of the card is accessible to a screen reader; the font on the card is a reasonable size; have a high contrast option; ensure the text inserted can be for any language, and ensure the card can be "tabbed" through.&amp;nbsp; Security for us is boiled down to SVG file vulnerabilities and content modification most of the content is loaded in via an API.&amp;nbsp; A card can be clicked, disabled, and focused/hovered.&amp;nbsp; Cards also have a state based on if they are a Math or Science card.&amp;nbsp; To keep this card abstract we can have a colored banner, Icon, Skeletal Card which outlines a header and body subcomponent, and the entire card itself to help with margins.
&amp;nbsp;
&amp;nbsp;
What difficulties do I expect to experience?&amp;nbsp; Mainly how to adjust font size and padding based on the length of the text and slotted content.&amp;nbsp; I do not have a lot of experience with CSS so learning to dynamically change it will be difficult for me.&amp;nbsp; This component will be practicing encapsulation from other languages except in HTML.&amp;nbsp; Planning of the slot values will also be difficult.&amp;nbsp; Considering how four components do need to work with one another, planning these values will be more difficult than coding them.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>CTA Button Web Component</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Sat, 25 Sep 2021 22:59:39 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/cta-button-web-component-64j</link>
      <guid>https://dev.to/liljimmyk99/cta-button-web-component-64j</guid>
      <description>&lt;p&gt;For my Web components class at Penn State, we have been tasked with creating a Call-To-Action(CTA) button.&amp;nbsp; So for my partner and I have some basic CSS applied to our button so we can visualize the changes in states: disabled, active/hover, and active/clicked.&amp;nbsp; In general, our project currently is just a template of everything we need to still complete.&amp;nbsp; We still need to work on the disabled state, inverted/high contrast mode, and the finalized styling to have a circular button instead of a rectangular button.&lt;/p&gt;

&lt;p&gt;Our progress has not been without challenges though; mainly understanding the requirements for the project and understanding the Open-WC boilerplate.&amp;nbsp; My partner and I midunderstood the directions since we initially did not have a  tag and we tried to make a button from scratch.&amp;nbsp; Once we had a chance to meet with the professor again we realized we needed to have the tag and that immediately helped solve a lot of our issues.&amp;nbsp; Since I am still new to web components, I did have trouble figuring out where the tests, storybook, and styling of the component took place in the example.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;So far I have learned the basics of the Open-WC framework and how powerful web components are.&amp;nbsp; I now understand the directory structure of this project and how useful storybook is!&amp;nbsp; Also, web components are an example of practicing DRY(Don't Repeat Yourself) in web development. Especially in large organizations having the same look, feel, and function to web components is essential.&amp;nbsp; My partner and I still have work to do and I still have tons to learn from here the rest of the semester!&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Link to the current element: &lt;a href="https://github.com/3B4B/circle-button-fj"&gt;https://github.com/3B4B/circle-button-fj&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
    </item>
    <item>
      <title>Web Component Framework Breakdown</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Sun, 12 Sep 2021 21:52:19 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/web-component-framework-breakdown-4ak</link>
      <guid>https://dev.to/liljimmyk99/web-component-framework-breakdown-4ak</guid>
      <description>&lt;p&gt;This week in my Web Components class, we looked into 4 popular Web Component Frameworks: Angular, React, StencilJS, and VueJS.&amp;nbsp; Each group member took one framework and followed the boilerplate/"Hello World" example to understand how projects in these frameworks are structured.&amp;nbsp; Below I will show the results of our research and testing as well as providing my personal opinions on a framework I would use.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Across all four frameworks, there were some similarities to the way they worked.&amp;nbsp; All four use JavaScript to create/define their components as well as the interactions with them.&amp;nbsp; Stencil JS does use TypeScript files however TypeScript is then translated to JavaScript.&amp;nbsp; The frameworks also have a similar file structure in a sense that each component is given it's own directory to be defined within the project.&amp;nbsp; What is in these directories varies by project.&amp;nbsp; Most use a JavaScript function and returns that return HTML but VueJS uses.Vue Files instead.&amp;nbsp; Lastly, all of these frameworks have a base index.html file which is where all the custom components are added to/called.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Based on looking at these frameworks, I think VueJS has the easiest development experience because it has the fewest amount of files out of all four frameworks.&amp;nbsp; I found when looking at the boilerplates for these frameworks, I easily understood where everything was in the VueJS directory.&amp;nbsp; I did not need to dig very far to find where the custom component was defined and what files interacted with it.&amp;nbsp; Since I have not used it to build anything, I don't know if can efficiently handle interactions like in other frameworks.&amp;nbsp; I have heard of React and Angular from my previous internships, but I have not heard of VueJS before.&amp;nbsp; This leads me to wonder how vast the development community is.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
With a few finds from our research, I would probably work with React to build an application.&amp;nbsp; I know from personal experience that the react community is vast.&amp;nbsp; The JavaScript files declaring components looks like HTML and is easy to understand what the code does.&amp;nbsp; I also can easily follow the file structure of this project, there are more files than VueJS, but it is still easy to follow along.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
To view the boilerplates my group generated, please visit our GitHub Repo here: &lt;a href="https://github.com/3B4B/boilerplates"&gt;https://github.com/3B4B/boilerplates&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Installing open-wc on MacOS</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Sun, 29 Aug 2021 03:08:31 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/installing-open-wc-on-macos-48a7</link>
      <guid>https://dev.to/liljimmyk99/installing-open-wc-on-macos-48a7</guid>
      <description>&lt;p&gt;In order to install open-wc we need to install some software, namely NodeJS/npm, and yarn.  We will start with NodeJS. First, navigate to &lt;a href="https://nodejs.org/en/"&gt;https://nodejs.org/en/&lt;/a&gt; and install the LTS version, at the time of writing that is 14.17.5.  Once the installer finishes downloading, open it and follow the prompts.  If npm is already installed on your machine preform the &lt;code&gt;npm install -g npm@latest&lt;/code&gt; to install the latest version of NPM&lt;/p&gt;

&lt;p&gt;Upon completion of installing Node, open Terminal and type in the following commands: &lt;code&gt;node -v&lt;/code&gt; and &lt;code&gt;npm -v&lt;/code&gt; to verify that your installation was successful.  &lt;/p&gt;

&lt;p&gt;To install yarn, open terminal type the following command: &lt;code&gt;curl -o- -L https://yarnpkg.com/install.sh | bash&lt;/code&gt;.  Upon the completion of the command preform the following command to verify installation: &lt;code&gt;yarn -v&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;With our dependencies installed, let’s create a test project called “hello-world”.  Let’s change directories such as Documents.  Open termainal and type &lt;code&gt;cd Documents&lt;/code&gt;.  Type ‘pwd’ to verify the output is &lt;code&gt;/Users/&amp;lt;Your User Name&amp;gt;/Documents&lt;/code&gt;.  Then type &lt;code&gt;npm init @open-wc&lt;/code&gt; and select the following options: Scaffold a new project, Web Component, enable Linting, Testing, and Demoing, do NOT use typescript, name it hello-world, select yes to write files to your hard drive, and Yes with Yarn.&lt;/p&gt;

&lt;p&gt;To verify the project worked, type the following commands &lt;code&gt;cd hello-world&lt;/code&gt; and then &lt;code&gt;npm start&lt;/code&gt;.  If your web browser opens, then your job is done.  To stop the project, return to terminal and hit ‘control’ + ‘c’&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>npm</category>
      <category>node</category>
    </item>
    <item>
      <title>console.log(Hello World)</title>
      <dc:creator>Jimmy Kane</dc:creator>
      <pubDate>Fri, 27 Aug 2021 01:13:16 +0000</pubDate>
      <link>https://dev.to/liljimmyk99/console-log-hello-world-2dpo</link>
      <guid>https://dev.to/liljimmyk99/console-log-hello-world-2dpo</guid>
      <description>&lt;p&gt;Hello World, my name is Jimmy Kane and I am a Senior at Penn State Main.  I'm majoring in Human-Centered Design and Development with a minor in Information Sciences and Technology.  I am currently enrolled in an Introduction to Web Components course which I am excited to take this semester!  Most of my coding experience overall has been backend web/server development.  I had the chance to intern with Penn State Enterprise IT in their Software Engineering department which is where most of my realworld experience is from.  In this internship I developed a webscraper with an AWS Lambda and AWS DynamoDB; a Podcast Management System API built using a AWS DynamoDB linked to an AWS S3 bucket via an AWS Lambda Function and API Gateway; and I worked on the custom Penn State Alexa Skill.&lt;/p&gt;

&lt;p&gt;Outside of Penn State my first internship was with the Bensalem Township School District’s IT department.  I got to see the inner workings of a small IT organization that does not code.  I was able to learn about Cisco Meraki, a Mobile Device Management system(MDM), the planning and executing of large IT projects, and being able to translate IT jargon to the average person’s diction level.  I also had the opportunity to Intern with Ford Motor Company IT this past summer as a Design Thinking Intern.  I was able to see how design thinking is applied by professionals in a large company and pick up some tricks by these professions for interviews. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
