<?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: Neel</title>
    <description>The latest articles on DEV Community by Neel (@ngyaboi).</description>
    <link>https://dev.to/ngyaboi</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%2F691425%2F5f39cb0f-5de0-469f-b78e-5b33b4e90f7a.jpeg</url>
      <title>DEV Community: Neel</title>
      <link>https://dev.to/ngyaboi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ngyaboi"/>
    <language>en</language>
    <item>
      <title>Let's Slime the Web</title>
      <dc:creator>Neel</dc:creator>
      <pubDate>Tue, 14 Dec 2021 03:43:18 +0000</pubDate>
      <link>https://dev.to/ngyaboi/lets-slime-the-web-5d4c</link>
      <guid>https://dev.to/ngyaboi/lets-slime-the-web-5d4c</guid>
      <description>&lt;p&gt;The capabilities of what a web component can do aesthetically and functionally can be boundless. As an expression of what one can do, a group project team of ours has decided to create a web component that involves a variety of user inputs and visual outputs.&lt;/p&gt;

&lt;h1&gt;
  
  
  What It Does
&lt;/h1&gt;

&lt;p&gt;The user is prompted a question to sort four statements in chronological order. The user will use up/down arrows to sort the statements in order, and then the question will tell the user what they got right and/or wrong. The user is provided a submit button and a reset button.&lt;/p&gt;

&lt;p&gt;If they get at least one statement wrong, an error sound will play along with flaming visuals. If they get all statements correct, a cheer sound will play along with confetti visuals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZrsS7NVF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uz72yb02sfs1ts077mif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZrsS7NVF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uz72yb02sfs1ts077mif.png" alt="Incorrect Response" width="800" height="374"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nom0QUGO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4m4gmmh00wwxw03wxfig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nom0QUGO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4m4gmmh00wwxw03wxfig.png" alt="Correct Response" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How It's Done
&lt;/h1&gt;

&lt;p&gt;The first thing that the group did was design the interface and card layout of the sorting question on a piece of scratch paper. This helps to guide the design process. Based on some questions we posed ourselves in terms of the component's features, we laid out the expected elements, their states, and the properties of the component.&lt;/p&gt;

&lt;p&gt;One sticking point was how we should implement dragging the sorting element, as opposed to just using the arrows. We did end up consulting Stack Overflow, which told us that the "draggable" attribute can be used, but based on our current iteration, that has not been implemented.&lt;/p&gt;

&lt;p&gt;You can find the sorting question component in its current iteration here: &lt;a href="https://github.com/Viable-Slime/slime-the-web"&gt;https://github.com/Viable-Slime/slime-the-web&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Bringing Classical Music to Streaming...</title>
      <dc:creator>Neel</dc:creator>
      <pubDate>Mon, 08 Nov 2021 00:10:10 +0000</pubDate>
      <link>https://dev.to/ngyaboi/bringing-classical-music-to-streaming-2n6o</link>
      <guid>https://dev.to/ngyaboi/bringing-classical-music-to-streaming-2n6o</guid>
      <description>&lt;p&gt;If I could build a tech service of any kind, it would be something that would be rather complex and long-term. This is the first thing that came to mind, given my passion for music and how the music industry handles artists.&lt;/p&gt;

&lt;p&gt;The app I would build would be a music streaming app specifically for classical music. What would distinguish it from streaming apps like Spotify and Apple Music is that it's metadata system would be built with classical in mind, as this genre requires different parameters for searching and cataloguing than popular music. Such parameters include piece, movement, composer, ensemble, conductor, album, etc. Because the major streaming services' metadata systems are tailored towards popular music (who's metadata only requires artist, album, song), a platform that fixes it is needed.&lt;/p&gt;

&lt;p&gt;The plan is for iOS and Android to have their own apps while desktop users will resort to a web-app. This is to ensure that the only requirements for desktop users is to have an up-to-date browser and not have to worry about device compatibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Who?
&lt;/h2&gt;

&lt;p&gt;This app could be used by anyone looking to be a subscriber, who would get access to the entire catalogue of albums and playlists. However, the primary appeal would be towards those classical aficionados who want their own space to experience music. Also, record labels and artists can take advantage of this platform as an alternative revenue stream as opposed to relying on just concerts and record sales. Especially during the COVID lockdowns where we saw venues and record stores take a hit, streaming became the dominant way that people consumed music. For the classical music industry to not take advantage of that and give its listeners an option was a problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  How would it be used?
&lt;/h2&gt;

&lt;p&gt;When a user logs in, the UI will be so that a play-bar will constantly show at the bottom, which will contain volume controls, track seeking, current track being played, and controls for rewind and skip. The rest of the page displays a menu bar on the left hand side for links to search, browse, view library, etc, and the main contents displayed on the page.&lt;/p&gt;

&lt;p&gt;From a user's perspective it can be used to play music on-demand either in the foreground or the background while your phone or desktop computer is off. Because it will be subscriber only, there is no need for in-app advertising between tracks or banner ads anywhere on the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivations
&lt;/h2&gt;

&lt;p&gt;What drives me to be in the IT industry is the growing focus around using free and open-source software. What initially drew me into the open-source "movement" was my curiosity with the Linux community that started 4 years back (I say community as the only thing in a Linux "operating system" named Linux is the kernel, as everything else is developed by other projects). Their emphasis on open-source not just being a form of licensing but a philosophy of software freedom was so compelling to me. If I were to dedicate my life to something, it would be contributing to and developing open-source tools for tasks that are otherwise being used by proprietary counterparts. This would also be the case if money were not an issue as developing open-source tools means people don't have to pay to use or distribute said software, and most open-source projects like GNOME or KDE need sponsors and donations to run.&lt;/p&gt;

&lt;p&gt;An open-source app that would power the above example streaming service would hope to serve as another example of a non-proprietary service being able to compete with proprietary service in the same industry.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How slots are used with JavaScript</title>
      <dc:creator>Neel</dc:creator>
      <pubDate>Wed, 27 Oct 2021 05:31:49 +0000</pubDate>
      <link>https://dev.to/ngyaboi/how-slots-are-used-with-javascript-2e76</link>
      <guid>https://dev.to/ngyaboi/how-slots-are-used-with-javascript-2e76</guid>
      <description>&lt;p&gt;The &lt;code&gt;&amp;lt;slot&amp;gt;&lt;/code&gt; element from HTML is an essential part of developing web components. According to &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot"&gt;MDN Web Docs&lt;/a&gt;, it acts as "a placeholder inside a web component that you can fill with your own markup." Essentially it allows you to pass in HTML content into the shadowroot.&lt;/p&gt;

&lt;h2&gt;
  
  
  How is it used?
&lt;/h2&gt;

&lt;p&gt;One way to use slots is through a web component as a card, which will contain a header and body. It is in the body section where support for any and/or all HTML content will have to account for when designing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;The way a slot can be implemented is by using a generic &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; container in your HTML file. This can be blank to be content agnostic, or if named the slot attribute will have to be passed in, such as &lt;code&gt;&amp;lt;span slot="slime-slot"&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;An example of how slots can be rendered from a JavaScript file is a follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;render() {
  return html`
  &amp;lt;h1&amp;gt;h1&amp;lt;/h1&amp;gt;
  &amp;lt;div class="slot-container"&amp;gt;
    &amp;lt;slot name="content"&amp;gt;&amp;lt;/slot&amp;gt;
    &amp;lt;slot&amp;gt;&amp;lt;/slot&amp;gt;
  &amp;lt;/div&amp;gt;
  `;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>What goes into building a web component</title>
      <dc:creator>Neel</dc:creator>
      <pubDate>Fri, 15 Oct 2021 04:09:21 +0000</pubDate>
      <link>https://dev.to/ngyaboi/what-goes-into-building-a-web-component-31cb</link>
      <guid>https://dev.to/ngyaboi/what-goes-into-building-a-web-component-31cb</guid>
      <description>&lt;p&gt;Building something as minimal as a card involves careful design considerations. A web component implies re-usability in different applications, so a card has to be built with adaptability and accessibility in mind.&lt;/p&gt;

&lt;p&gt;For the purposes of this blog, this card will contain the following sub-elements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an icon: represented by an svg file&lt;/li&gt;
&lt;li&gt;a heading: contains the icon plus a title and a sub-title&lt;/li&gt;
&lt;li&gt;a body: contains text and possibly images&lt;/li&gt;
&lt;li&gt;the card: a summation of the icon, heading, and body&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a team of four, each member can be responsible for one sub-element, with the card member assisting in the other three to ensure that they function together. This might be the most &lt;em&gt;difficult&lt;/em&gt; aspect of the card development process.&lt;/p&gt;

&lt;p&gt;If I have learned anything from creating the button component that preceded this, I expect to improve on how I implement css attributes as well as my JS fundamentals.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Easy Button: Not So Easy</title>
      <dc:creator>Neel</dc:creator>
      <pubDate>Tue, 12 Oct 2021 06:50:10 +0000</pubDate>
      <link>https://dev.to/ngyaboi/easy-button-not-so-easy-4cn2</link>
      <guid>https://dev.to/ngyaboi/easy-button-not-so-easy-4cn2</guid>
      <description>&lt;p&gt;There is a lot that goes into developing a deceptively simple CTA button built on JavaScript. There is a lot to consider in each stage of the process without leaving design holes. For a team project, I worked on creating a button that would be rendered onto a web page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubles
&lt;/h2&gt;

&lt;p&gt;At first our team was not sure how to properly edit the styles built into the open-wc boilerplate that we started on. We assumed that we needed to implement constructors a certain way, coming from Java programming, but using CSS was enough for styling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Successes
&lt;/h2&gt;

&lt;p&gt;The team's design process for the button was relatively smooth. The button started out similar to the one provided in the open-wc boilerplate. We knew what the design consideration was from the outset, which is going to be a red Staples "That Was Easy" button.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;I learned how different the development process is with web components as opposed to Java or Python programming. Writing states and attributes to create the CTA experience required some out-of-the-box thinking. In the future, we would like to add more attributes to enhance the experience, particularly for on-click functions.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/Viable-Slime/Button"&gt;https://github.com/Viable-Slime/Button&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>JS Boilerplates Comparison</title>
      <dc:creator>Neel</dc:creator>
      <pubDate>Thu, 30 Sep 2021 00:37:25 +0000</pubDate>
      <link>https://dev.to/ngyaboi/js-boilerplates-comparison-51e0</link>
      <guid>https://dev.to/ngyaboi/js-boilerplates-comparison-51e0</guid>
      <description>&lt;p&gt;Here, I will discuss a set of four boilerplates, created for one each of the following JavaScript libraries: React, Angular, Vue.js, and StencilJS. A boilerplate, for those who don't know, is a basic template that can be used to build a project from.&lt;/p&gt;

&lt;p&gt;My process for finding my Angular boilerplate was using the web to look for one that is hosted on GitHub. Unlike looking for Vue.js or especially React boilerplates, there is no &lt;em&gt;de facto&lt;/em&gt; standard boilerplate available, but rather several smaller user-generated boilerplates which do not guarantee that they work well. The installation was straightforward, which involved installing dependencies using npm, which I didn't expect to take as long as it actually did considering how stripped-down the end boilerplate is.&lt;/p&gt;

&lt;p&gt;The React boiler chosen was created by Max Stoiber, and is by far the most popular React boiler on GitHub. It's individual components are divvied into their own files and folders all contained within the app/components folder. The components are easy to follow.&lt;/p&gt;

&lt;p&gt;The StencilJS boiler is a Storybook boiler that had an absurd number of vulnerabilities that had to be audited when installing npm. It is very barebones with few in the way of interactive components.&lt;/p&gt;

&lt;p&gt;The Vue.js boiler is the Vue CLI as provided by vuejs.org. required running &lt;code&gt;npm run build&lt;/code&gt; followed by &lt;code&gt;serve -s dist&lt;/code&gt; to start up as opposed to &lt;code&gt;npm start&lt;/code&gt; with Angular, React, and Stencil. It is very simple with a handful of links and text, and the components are quite simple.&lt;/p&gt;

&lt;p&gt;For me, the React boilerplate had the most to work with, the most straight-forward code, and had by far the most hassle-free setup.&lt;/p&gt;

&lt;p&gt;The link to our cloned boilerplates is here: &lt;a href="https://github.com/Viable-Slime/BoilerPlate"&gt;https://github.com/Viable-Slime/BoilerPlate&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Installing Open-WC on Windows 10</title>
      <dc:creator>Neel</dc:creator>
      <pubDate>Wed, 01 Sep 2021 07:13:37 +0000</pubDate>
      <link>https://dev.to/ngyaboi/installing-open-wc-on-windows-10-1npf</link>
      <guid>https://dev.to/ngyaboi/installing-open-wc-on-windows-10-1npf</guid>
      <description>&lt;p&gt;Everything involving Open Web Components will be using &lt;strong&gt;Noje.js&lt;/strong&gt;. The instructions to get Node.js installed are as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://nodejs.org/"&gt;nodejs.org&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Look under the "Download for Windows" heading.&lt;/li&gt;
&lt;li&gt;Click on left button to install the LTS version.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Node installation should come with the package manager &lt;strong&gt;npm&lt;/strong&gt;. You should also install &lt;strong&gt;yarn&lt;/strong&gt;, an alternative to npm. Using npm, which can be opened by typing in "npm" in Windows search, you should execute this command to install yarn:&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 yarn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All your projects will be located in the following directory, which should be created if you have not so:&lt;br&gt;
&lt;code&gt;C:Users\user\Documents\git\edtechjoker&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In that directory, using npm, execute the command &lt;code&gt;npm init @ open-wc&lt;/code&gt; to initialize Open-WC. That should lead you to prompts to create a new project, which should have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a web component&lt;/li&gt;
&lt;li&gt;options for linting, testing, and demoing checked&lt;/li&gt;
&lt;li&gt;created without typescript&lt;/li&gt;
&lt;li&gt;be named hello-world&lt;/li&gt;
&lt;li&gt;installed using yarn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To check to see if you have done everything right, type the following commands to go into the hello-world directory, and fire up your webpage.&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-world
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: The hello-world directory must be in lowercase, as it is not just a naming convention but how the project functions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hello There...</title>
      <dc:creator>Neel</dc:creator>
      <pubDate>Wed, 01 Sep 2021 04:45:58 +0000</pubDate>
      <link>https://dev.to/ngyaboi/hello-there-18lo</link>
      <guid>https://dev.to/ngyaboi/hello-there-18lo</guid>
      <description>&lt;p&gt;My name is Neel Ghosh, and I am a Junior at Penn State. I am majoring in Information Science &amp;amp; Technology in the Integration path. I am familiar with coding in Java and SQL, and I am new to JavaScript and web development. I would like to at least be aware of if not familiar with the full stack of web developing, of which the front-end I am the least familiar with.&lt;/p&gt;

&lt;p&gt;Outside of the classroom, I am mostly an indoors person, although I am trying to change that by getting more physically active through biking and lifting. In my spare time, I am also an active music listener. I mostly too classical and metal music, in which I don't listen to it in the background as a lot of people do.&lt;/p&gt;

&lt;p&gt;I hope this blog gave some insight into who I am.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
