<?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>Forem: Jack Kim</title>
    <description>The latest articles on Forem by Jack Kim (@jmjkim).</description>
    <link>https://forem.com/jmjkim</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%2F807129%2F927a0bd9-ec92-4311-b657-6aec82e3e293.png</url>
      <title>Forem: Jack Kim</title>
      <link>https://forem.com/jmjkim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jmjkim"/>
    <language>en</language>
    <item>
      <title>FIS Phase 5 Final Project Demonstration (Eventeller)</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Mon, 16 Jan 2023 09:31:51 +0000</pubDate>
      <link>https://forem.com/jmjkim/fis-phase-5-final-project-demonstration-eventeller-3o5f</link>
      <guid>https://forem.com/jmjkim/fis-phase-5-final-project-demonstration-eventeller-3o5f</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/F22JO5Oouto"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;This is my phase 5 Final project at Flatiron School.&lt;/p&gt;

&lt;p&gt;For any questions, feedbacks, please leave a comment.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/jmjkim/fisphase5-final-project" rel="noopener noreferrer"&gt;https://github.com/jmjkim/fisphase5-final-project&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Ruby On Rails: Multiple roles for a given model</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Sat, 14 Jan 2023 23:17:25 +0000</pubDate>
      <link>https://forem.com/jmjkim/ruby-on-rails-multiple-roles-for-a-given-model-2nii</link>
      <guid>https://forem.com/jmjkim/ruby-on-rails-multiple-roles-for-a-given-model-2nii</guid>
      <description>&lt;p&gt;While working on my final project for my software engineer course at Flatiron School, I have learned about many different interesting model associations. There was one particular model association that drew me in the most, which is a model that consists of multiple roles.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Click &lt;a href="https://www.theodinproject.com/lessons/ruby-on-rails-active-record-associations"&gt;here&lt;/a&gt; for more details on the multiple roles for the given model&lt;/em&gt;.&lt;/p&gt;




&lt;p&gt;It took me several days to grasp how one model can have multiple roles. My understanding of a model is that the instances from a model should be identifiable as one unique instance but with the concept of "multiple roles", a model can create instances that can behave like two different instances.&lt;/p&gt;

&lt;p&gt;To give an example of multiple roles, here is three of the four models for my project.&lt;/p&gt;

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




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




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




&lt;p&gt;Please take a closer look at my &lt;code&gt;User&lt;/code&gt; model. It has a &lt;code&gt;coordinator_id&lt;/code&gt; and &lt;code&gt;attendee_id&lt;/code&gt;. It does not appear to look right because there are more than one ID attributes (technically 3 IDs including &lt;code&gt;user_id&lt;/code&gt;). However, notice that the differently named ID attributes are used as a &lt;code&gt;foreign key&lt;/code&gt; or &lt;code&gt;belongs_to&lt;/code&gt; for associating &lt;code&gt;User&lt;/code&gt; model to the other two models. This tells me that the instances of coordinator and attendees of the &lt;code&gt;User&lt;/code&gt; model can be associated to the other two models. &lt;/p&gt;

&lt;p&gt;Concisely speaking, the implemented "multiple roles" to my model association allows the &lt;code&gt;Event&lt;/code&gt; model to have both an instance of coordinator and multiple instances of event attendee from the &lt;code&gt;User&lt;/code&gt; model with the proper model association using &lt;code&gt;foreign key&lt;/code&gt; and &lt;code&gt;belongs_to&lt;/code&gt;. This means that an event can have both the coordinator and attendees at the same time. Therefore, it was not necessary to create additional models for Coordinator and Attendee model.&lt;/p&gt;




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

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




&lt;p&gt;In conclusion, my understanding of the "multiple roles" is that it associates one model to the other through the joined table (&lt;code&gt;EventAttendee&lt;/code&gt; joins &lt;code&gt;User&lt;/code&gt; and &lt;code&gt;Event&lt;/code&gt; models like a bridge) by using &lt;code&gt;foreign key&lt;/code&gt; and &lt;code&gt;class_name&lt;/code&gt; so that the models know where to look for the corresponding ID of the instances from the &lt;code&gt;class_name&lt;/code&gt; models. &lt;/p&gt;

&lt;p&gt;I strongly recommend reading about the &lt;em&gt;&lt;a href="https://www.theodinproject.com/lessons/ruby-on-rails-active-record-associations"&gt;multiple roles&lt;/a&gt; in which it provides more details on the multiple roles for the given model&lt;/em&gt;. It is critical to understand the basic model associations such as belongs_to, has_many to clearly understand the "multiple roles".&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
Multiple roles: &lt;a href="https://www.theodinproject.com/lessons/ruby-on-rails-active-record-associations"&gt;https://www.theodinproject.com/lessons/ruby-on-rails-active-record-associations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cover image: &lt;a href="https://premieragile.com/safe-product-owner-responsibilities/"&gt;https://premieragile.com/safe-product-owner-responsibilities/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rails</category>
    </item>
    <item>
      <title>FIS Phase 4 Project Demonstration (Lamborghinian)</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Thu, 17 Nov 2022 06:31:13 +0000</pubDate>
      <link>https://forem.com/jmjkim/fis-phase-4-project-demonstration-lamborghinian-apd</link>
      <guid>https://forem.com/jmjkim/fis-phase-4-project-demonstration-lamborghinian-apd</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/hCBBGYJejYQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;This is my phase 4 project at Flatiron School.&lt;/p&gt;

&lt;p&gt;For any questions, feedbacks, please leave a comment.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/jmjkim/fisphase4-project"&gt;https://github.com/jmjkim/fisphase4-project&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ruby On Rails: Strong Params and Mass Assignment</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Sat, 12 Nov 2022 09:36:06 +0000</pubDate>
      <link>https://forem.com/jmjkim/ruby-on-rails-strong-params-and-mass-assignment-501p</link>
      <guid>https://forem.com/jmjkim/ruby-on-rails-strong-params-and-mass-assignment-501p</guid>
      <description>&lt;p&gt;In this writing, I will explain the benefits and dangers of mass assignment and use &lt;code&gt;params.permit&lt;/code&gt; to allow specific params.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What is mass assignment?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The mass assignment passes a &lt;code&gt;:key =&amp;gt; value&lt;/code&gt; params hash to a model's &lt;code&gt;create()&lt;/code&gt; or &lt;code&gt;new()&lt;/code&gt; method to create an instance.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A benefit of using a mass assignment&lt;/strong&gt; &lt;br&gt;
The mass assignment can simplify creating an instance of a model with multiple attributes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AnimalTrainer.create(
  name: params[:name],
  email: params[:email],
  favorite_species: params[:favorite_species],
  admin: params[:admin]
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of typing every single &lt;code&gt;attribute:params[:attribute]&lt;/code&gt;, using mass assignment with one params argument will look like as simple as&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;params = {
  name: "Emma",
  email: "iluvpanda@gmail.com",
  favorite_species: "Pink Panda",
  admin: true
}

AnimalTrainer.create(params)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;p&gt;&lt;strong&gt;A danger of using mass assignment&lt;/strong&gt;&lt;br&gt;
Mass assignment in its nature has a vulnerability where &lt;code&gt;:key =&amp;gt; value&lt;/code&gt; params hash will be accepted as is. For an example, I can send a params hash such as &lt;code&gt;:admin =&amp;gt; true&lt;/code&gt; or &lt;code&gt;:email =&amp;gt; "illegalemail@gmail.com"&lt;/code&gt;.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strong params&lt;/strong&gt;&lt;br&gt;
To prevent "dangerous params hash", you can create a function with using &lt;code&gt;params.permit&lt;/code&gt; to allow specific params.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class AnimalTrainersController &amp;lt; ApplicationController

  # POST /animal_trainers
  def create
    trainer = AnimalTrainer.create(animal_trainer_params)
    render json: trainer, status: :created
  end

  # other controller actions here

  private
  # all methods below here are private

  def animal_trainer_params
    params.permit(:name, :email, :species)
  end

end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;animal_trainer_params&lt;/code&gt; function now filters "unassigned" &lt;code&gt;:key =&amp;gt; value&lt;/code&gt; params hash to the prevent mass assignment vulnerability. &lt;/p&gt;

&lt;p&gt;My understanding of strong params is like an attendance sheet in a classroom where you cannot be sitting in the classroom and you do not have an access to the class materials if your name is not on the attendance sheet.&lt;/p&gt;




&lt;p&gt;An example from my code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;My code with strong params&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_k_IaOlA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lj9z68t97yfry2g4vcf9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_k_IaOlA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lj9z68t97yfry2g4vcf9.png" alt="My code with strong params" width="880" height="373"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A fake key and value added&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a9cKWy6i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3dakx7jp5q21i7fv3652.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a9cKWy6i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3dakx7jp5q21i7fv3652.png" alt="A fake key and value added" width="880" height="510"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Status code: 201 created without a fake key and value&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--udRhjXia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/65wldyvyjgy0ie6c4dc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--udRhjXia--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/65wldyvyjgy0ie6c4dc9.png" alt="Status code: 201 created without a fake key and value" width="880" height="484"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you would like to know more details about strong params and mass assignment, please refer to &lt;a href="https://guides.rubyonrails.org/v3.2.9/security.html#mass-assignment"&gt;Rails Guide Mass Assignment&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Resources
&lt;/h1&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
Cover Image: &lt;br&gt;
&lt;a href="https://cdn.searchenginejournal.com/wp-content/uploads/2020/08/a-personalized-entity-repository-in-the-knowledge-graph-5f48cec744afc.png"&gt;https://cdn.searchenginejournal.com/wp-content/uploads/2020/08/a-personalized-entity-repository-in-the-knowledge-graph-5f48cec744afc.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mass Assignment Vulnerability:&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Mass_assignment_vulnerability"&gt;https://en.wikipedia.org/wiki/Mass_assignment_vulnerability&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Strong params: &lt;br&gt;
&lt;a href="https://guides.rubyonrails.org/action_controller_overview.html#strong-parameters"&gt;https://guides.rubyonrails.org/action_controller_overview.html#strong-parameters&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rails</category>
      <category>params</category>
    </item>
    <item>
      <title>FIS Phase 3 Project Demonstration (EMN-F Manager)</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Fri, 19 Aug 2022 10:18:00 +0000</pubDate>
      <link>https://forem.com/jmjkim/fis-phase-3-project-demonstration-emn-f-manager-1ch</link>
      <guid>https://forem.com/jmjkim/fis-phase-3-project-demonstration-emn-f-manager-1ch</guid>
      <description>&lt;p&gt;EMNF-S Manager is a short name for Engine Manufacturing.&lt;/p&gt;

&lt;p&gt;This is my phase 3 project at Flatiron School.&lt;/p&gt;




&lt;p&gt;For any questions, feedbacks, please leave a comment.&lt;/p&gt;

&lt;p&gt;Thank you. &lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/jmjkim/fisphase3-project"&gt;https://github.com/jmjkim/fisphase3-project&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to retain form values after reloading your browser</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Wed, 17 Aug 2022 08:06:00 +0000</pubDate>
      <link>https://forem.com/jmjkim/how-to-keep-input-values-even-after-reloading-your-browser-4mm5</link>
      <guid>https://forem.com/jmjkim/how-to-keep-input-values-even-after-reloading-your-browser-4mm5</guid>
      <description>&lt;p&gt;I was working on my phase 3 project for Flatiron School where I had to build a &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; element on the front-end side. As you already know, form usually contains &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; elements with &lt;code&gt;value&lt;/code&gt; attribute. &lt;/p&gt;

&lt;p&gt;One thing I realized as I was testing on submitting my &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt;, my form values would not be retained when the browser reloads. &lt;/p&gt;

&lt;p&gt;Maybe it is trivial if the form has very few &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; but what if you need to build a form that creates a person's profile by using their information such as past employment history or a personal background information where it requires to have at least 100-200 words? I assume in that case most of users do not want to re-type over again.&lt;/p&gt;

&lt;p&gt;Regardless of how many inputs a form should have, a form retaining its value(s) under unexpected circumstances is more ideal than not able to retain its value(s) in my opinion.&lt;/p&gt;

&lt;p&gt;To prevent this incident, I spent some times searching for a solution to the problem and as always.. &lt;strong&gt;MDN Web Docs&lt;/strong&gt; already had the answer.&lt;/p&gt;

&lt;p&gt;A &lt;u&gt;short scrollbar length&lt;/u&gt; article about &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage" rel="noopener noreferrer"&gt;sessionStorage&lt;/a&gt;.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;A page session lasts as long as the tab or the browser is open, and survives over page reloads and restores.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;According to the article, one of the sessionStorage features does exactly what I was looking for. I tested it on my &lt;code&gt;Developer Tools&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdh5f4zjjq7lzaib5wwh5.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%2Fdh5f4zjjq7lzaib5wwh5.png" alt="setting a sample value in the browser tab sessionStorage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sessionStorage.setItem("thisIsKeyName", "this is value stored in sessionStorage")&lt;/code&gt; takes two arguments. First argument is the key name for your value, second argument is the value you want to store in the sessionStorage. &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%2Fsmxpf57h1oneqhewkl74.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%2Fsmxpf57h1oneqhewkl74.png" alt="The value is stored in the browser tab sessionStorage"&gt;&lt;/a&gt; Go to &lt;code&gt;Developer Tools&lt;/code&gt;, click on &lt;code&gt;Application&lt;/code&gt; tab and on the left side, you can check your stored value in the &lt;code&gt;Session Storage&lt;/code&gt; (a &lt;code&gt;keyName&lt;/code&gt; and &lt;code&gt;value&lt;/code&gt;...it's an &lt;code&gt;object&lt;/code&gt;!)&lt;/p&gt;

&lt;p&gt;To obtain your session stored value, simply assign it to a variable. &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%2Fw8eoi3mc8vcw7v23k2cc.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%2Fw8eoi3mc8vcw7v23k2cc.png" alt="getting your stored value"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whatever the value may be, once it is in the sessionStorage, your browser will not lose it, also you can use the value later on just like you get it out from your "storage" when you need it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Cover image: &lt;a href="https://depositphotos.com/stock-photos/storage.html" rel="noopener noreferrer"&gt;https://depositphotos.com/stock-photos/storage.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MDN Web Docs: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>sessionstorage</category>
      <category>form</category>
      <category>input</category>
      <category>reload</category>
    </item>
    <item>
      <title>FIS Phase 2 Project Demonstration (Inventory Manager)</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Wed, 08 Jun 2022 10:13:17 +0000</pubDate>
      <link>https://forem.com/jmjkim/fis-phase-2-project-walkthrough-inventory-manager-1pac</link>
      <guid>https://forem.com/jmjkim/fis-phase-2-project-walkthrough-inventory-manager-1pac</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/MicMKhlTQuU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/jmjkim/fisphase2-project"&gt;https://github.com/jmjkim/fisphase2-project&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Eliminating duplicates in an array</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Tue, 07 Jun 2022 01:55:48 +0000</pubDate>
      <link>https://forem.com/jmjkim/eliminating-duplicates-in-an-array-writing-in-progress-3gl4</link>
      <guid>https://forem.com/jmjkim/eliminating-duplicates-in-an-array-writing-in-progress-3gl4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Thanks to &lt;em&gt;Juliano Rodrigues&lt;/em&gt;'s comment! A simpler way to eliminate duplicates in array is using &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set" rel="noopener noreferrer"&gt;Set()&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;For my second software engineering project at Flatiron School, I created an &lt;strong&gt;Inventory Manager&lt;/strong&gt; application. The application handles basic CRUD functions on registered stocks or add new stock. Some other small features included such as searching stocks by its ID or filtering stock list by stock type or supplier. Click &lt;a href="https://github.com/jmjkim/fisphase2-project" rel="noopener noreferrer"&gt;here&lt;/a&gt; to check out project code.&lt;/p&gt;

&lt;p&gt;One day, I was working on the dropdown format filter bar for the project and I wanted to create filtering options. I used &lt;code&gt;map&lt;/code&gt; method to grab the stock types and suppliers but then I  encountered a minor problem. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note: Array of Stock Type is used for demonstration&lt;/strong&gt; &lt;br&gt;
&lt;br&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl56i3kkjldrobnhc3j9b.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%2Fl56i3kkjldrobnhc3j9b.png" alt="Mapping array of types"&gt;&lt;/a&gt;Iterating over arrays of type.&lt;br&gt;
&lt;br&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqze591qz75q80wd4qk2k.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%2Fqze591qz75q80wd4qk2k.png" alt="Duplicated types"&gt;&lt;/a&gt;Oops, metal and rock are duplicated.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;I forgot about that some of stock types had duplicated values. What I needed to do was eliminate these duplicates from the array.&lt;/p&gt;

&lt;p&gt;After researching for a while, I found a way that easily solved my problem by using &lt;code&gt;indexOf&lt;/code&gt; method.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;According to the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf" rel="noopener noreferrer"&gt;&lt;strong&gt;MDN Web Docs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The indexOf() method returns the &lt;strong&gt;first index&lt;/strong&gt; at which a &lt;strong&gt;given element can be found in the array&lt;/strong&gt;, or -1 if it is not present.&lt;/p&gt;
&lt;/blockquote&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%2Fdl8tsfr7wxk1fi7f5r0g.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%2Fdl8tsfr7wxk1fi7f5r0g.png" alt="IndexOf example from MDN"&gt;&lt;/a&gt; Example of &lt;code&gt;indexOf&lt;/code&gt; method from MDN Web Docs.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Here is my solution code and explanation.&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%2Fzh9e0em99bctrof5jtw8.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%2Fzh9e0em99bctrof5jtw8.png" alt="Solution"&gt;&lt;/a&gt; All I did was added simple &lt;code&gt;if statement&lt;/code&gt; with &lt;code&gt;indexOf&lt;/code&gt; method.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Here, I made a simple chart to compare index vs indexOf values. On the left side is returned index values of &lt;code&gt;types.map((type, index) =&amp;gt; {..if statement..})&lt;/code&gt;. On the right side is returned values of &lt;code&gt;types.indexOf(type)&lt;/code&gt; inside &lt;code&gt;if statement&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type   index value   /   Type      indexOf value

wood        0            wood             0
metal       1            metal            1*
rock        2            rock             2*
misc        3            misc             3
Protection  4            Protection       4
rock        5            rock             2*
gold        6            gold             6
metal       7            metal            1*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;p&gt;Looking back at the &lt;code&gt;indexOf&lt;/code&gt; &lt;strong&gt;MDN Web Docs&lt;/strong&gt; definition,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The indexOf() method returns the &lt;strong&gt;first index&lt;/strong&gt; at which a &lt;strong&gt;given element&lt;/strong&gt; can be found in the array&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;just like the definition, on the chart &lt;em&gt;metal&lt;/em&gt; and &lt;em&gt;rock&lt;/em&gt; under the &lt;strong&gt;indexOf value&lt;/strong&gt; has the "&lt;em&gt;first index returned&lt;/em&gt;" value after being iterated by type.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Think like this, &lt;code&gt;indexOf&lt;/code&gt; method will iterate an array and will return the "first" initialized index value. Hence, &lt;code&gt;indexOf&lt;/code&gt; values for the &lt;em&gt;metal&lt;/em&gt; and &lt;em&gt;rock&lt;/em&gt; has the same "first" index value as when it gets first "index spotted".&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%2Flswh598ycieocj7spanv.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%2Flswh598ycieocj7spanv.png" alt="No more duplicates"&gt;&lt;/a&gt;No more duplicates&lt;/p&gt;

&lt;p&gt;Feel free to leave a comment for any questions or corrections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Cover-Image&lt;/em&gt;:&lt;br&gt;
&lt;a href="https://hackernoon.com/when-code-duplication-is-acceptable-51ce33ecd0f5" rel="noopener noreferrer"&gt;https://hackernoon.com/when-code-duplication-is-acceptable-51ce33ecd0f5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Code &amp;amp; Project Images&lt;/em&gt;:&lt;br&gt;
My project code&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>javascript</category>
      <category>indexof</category>
      <category>map</category>
    </item>
    <item>
      <title>FIS Phase 1 Project Demonstration (HR Manager)</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Wed, 30 Mar 2022 06:34:58 +0000</pubDate>
      <link>https://forem.com/jmjkim/fis-phase-1-project-walkthrough-515i</link>
      <guid>https://forem.com/jmjkim/fis-phase-1-project-walkthrough-515i</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full CRUD features added.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After Live Coding assessment,&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sorting by first name feature added. &lt;/li&gt;
&lt;li&gt;Short Name feature added. &lt;/li&gt;
&lt;li&gt;Timer feature added. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;&lt;br&gt;
&lt;a href=""&gt;https://github.com/jmjkim/fisphase1-project&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>flatironschool</category>
    </item>
    <item>
      <title>Destructuring Object Keys</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Tue, 29 Mar 2022 20:59:10 +0000</pubDate>
      <link>https://forem.com/jmjkim/destructuring-object-keys-4f8</link>
      <guid>https://forem.com/jmjkim/destructuring-object-keys-4f8</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OTHrCVgW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wq1biuwpnih57hyo0p4s.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OTHrCVgW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wq1biuwpnih57hyo0p4s.jpeg" alt="Cover Image" width="880" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After rigorous days of coding for my first project, I created a simple vanilla javascript project called "&lt;strong&gt;HR Manager&lt;/strong&gt;" (&lt;em&gt;short for Human Resource&lt;/em&gt;) where you can &lt;strong&gt;search&lt;/strong&gt; employees by their unique ID and &lt;strong&gt;update&lt;/strong&gt; employee's information (&lt;em&gt;Edit &amp;amp; Update of CRUD functions&lt;/em&gt;). Thanks to &lt;a href="https://www.npmjs.com/package/json-server"&gt;JSON-server&lt;/a&gt;, I was able to mock a prototype database for this project.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;A Screenshot of my Project Interface&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IrnJsoI4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kbfhdaal6rvawp7fzvk9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IrnJsoI4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kbfhdaal6rvawp7fzvk9.png" alt="Image description" width="880" height="714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: All of displaying data is obtained from &lt;a href="https://random-data-api.com/"&gt;Random Data Generator&lt;/a&gt;. Sensitive information is hidden as a security feature (becomes visible on mouse hover).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Application Structure&lt;/strong&gt;&lt;/em&gt;:&lt;br&gt;
&lt;code&gt;Fetch API&lt;/code&gt; -&amp;gt; &lt;code&gt;Database&lt;/code&gt; -&amp;gt; &lt;code&gt;.then(dataDisplayerFunction)&lt;/code&gt; -&amp;gt; &lt;code&gt;Update&lt;/code&gt; -&amp;gt; &lt;code&gt;Fetch method: "PATCH"&lt;/code&gt; -&amp;gt; &lt;code&gt;Database&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The main purpose of the application is to get the employee's data from a server and then updates data if necessary, then send the updated data back to the server. Because of its simplicity and a sole purpose, the application was built in a plain structure.&lt;/p&gt;




&lt;p&gt;After planning the structure of my project, I spent a good time observing the randomly generated data I obtained from &lt;a href="https://random-data-api.com/"&gt;Random Data Generator&lt;/a&gt; then I decided to "refine" the data structure in order to make it suitable for my project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Original Data Structure&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vI9YBRBS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/feyzuj305nyfbsu22itj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vI9YBRBS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/feyzuj305nyfbsu22itj.png" alt="Image description" width="880" height="517"&gt;&lt;/a&gt;&lt;em&gt;Too many keys!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;After researching about restructuring data (data is an object), I finally came up with a perfect solution. The &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment"&gt;destructuring assignment&lt;/a&gt; syntax is "The" method for working with object, especially for modifying keys and values.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Destructuring Assignment in my code&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WVCtc1xF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bwt9svsqkvwpgdhhh5tx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WVCtc1xF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bwt9svsqkvwpgdhhh5tx.png" alt="Image description" width="880" height="826"&gt;&lt;/a&gt;&lt;em&gt;I was able to rename the keys and assign values in different formats by using destructuring assignment syntax with &lt;code&gt;String Interpolation&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;After Destructuring Assignment&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5OQ4-Fc7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i0mzwpeasvg21pmh1jpi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5OQ4-Fc7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i0mzwpeasvg21pmh1jpi.png" alt="Image description" width="880" height="175"&gt;&lt;/a&gt; &lt;em&gt;Refined Object&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cover Image: &lt;a href="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wq1biuwpnih57hyo0p4s.jpeg"&gt;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wq1biuwpnih57hyo0p4s.jpeg&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/json-server"&gt;JSON-server&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://random-data-api.com/"&gt;Random Data Generator&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Project code: &lt;a href=""&gt;https://github.com/jmjkim/fisphase1-project&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>firstproject</category>
      <category>objectkey</category>
      <category>destructuringassignment</category>
    </item>
    <item>
      <title>A Prospective Backend Developer</title>
      <dc:creator>Jack Kim</dc:creator>
      <pubDate>Tue, 01 Feb 2022 03:26:00 +0000</pubDate>
      <link>https://forem.com/jmjkim/backend-developer-212d</link>
      <guid>https://forem.com/jmjkim/backend-developer-212d</guid>
      <description>&lt;p&gt;I've been curious and interested about what is happening behind the screen I see every time when I read local news, watch youtube and practice coding, etc. A curiosity such as a video shows up on my screen when I click the play button and typing my ID and password allows me to access to my online bank account and purchase some stuff on amazon.&lt;/p&gt;

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

&lt;p&gt;Just by drawing a visual process in my head, I can kind of understand conceptually how it's working (&lt;em&gt;like whatever your typing will be evaluated for a match from a "somewhere far away" database and then it will validate your credential and gives you a "I know who you are" confirmation.&lt;/em&gt;) but..really, how does that "actually" works? &lt;/p&gt;

&lt;p&gt;Finally, today is the Day 1 at Flatiron School for software engineering and I know I am going to be submerged with tremendous amount of web developing and coding knowledges but I am actually super excited and ready for a challenge that will lead me to break my "back..and?" (high level rhyme joke) curiosity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a backend developer?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.codecademy.com/resources/blog/what-does-a-back-end-developer-do/"&gt;https://www.codecademy.com/resources/blog/what-does-a-back-end-developer-do/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image1&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://codeworkshop.dev/blog/2020-12-23-what-is-the-difference-between-backend-and-frontend-developers/"&gt;https://codeworkshop.dev/blog/2020-12-23-what-is-the-difference-between-backend-and-frontend-developers/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
