<?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: DerekJxy</title>
    <description>The latest articles on DEV Community by DerekJxy (@derekjxy).</description>
    <link>https://dev.to/derekjxy</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%2F701363%2Fa49827e3-63d5-4e2d-a467-4e044354a0a8.jpeg</url>
      <title>DEV Community: DerekJxy</title>
      <link>https://dev.to/derekjxy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/derekjxy"/>
    <language>en</language>
    <item>
      <title>Release of Final Assignment</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Thu, 16 Dec 2021 18:37:45 +0000</pubDate>
      <link>https://dev.to/derekjxy/release-of-final-assignment-6g3</link>
      <guid>https://dev.to/derekjxy/release-of-final-assignment-6g3</guid>
      <description>&lt;p&gt;After all the improvements I made for the project, I would say it becomes better. &lt;/p&gt;

&lt;p&gt;Here is some comparison: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xJiHhwMB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1gs8tw9k2odehks5pe54.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xJiHhwMB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1gs8tw9k2odehks5pe54.jpg" alt="comparison" width="880" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Undone-All in light mode:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ze1W9-aj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l8u4t84piz3gdx7mj467.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ze1W9-aj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l8u4t84piz3gdx7mj467.jpg" alt="Undone-All_light" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Done-All in dark mode:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JHr3rd-6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4n6g0wck0r0mk7zxl9la.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JHr3rd-6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4n6g0wck0r0mk7zxl9la.jpg" alt="Done-All_dark" width="880" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Edit todoList in dark mode:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Lge1jAtc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wfvefaxzp21k1n5wnvx4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Lge1jAtc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wfvefaxzp21k1n5wnvx4.jpg" alt="prompt" width="880" height="444"&gt;&lt;/a&gt;&lt;br&gt;
todoList Updated:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--odC9KPLV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bm490x1wlkw31e0kc313.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--odC9KPLV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bm490x1wlkw31e0kc313.jpg" alt="todoList_Updated" width="880" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Delete todoList in dark mode:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jfgEX7tB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tnlf50tkz4ez1f8borzi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jfgEX7tB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tnlf50tkz4ez1f8borzi.jpg" alt="todoList_deleted" width="880" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overall&lt;/strong&gt;, I added &lt;strong&gt;two new buttons&lt;/strong&gt;(features) to the program. One is &lt;code&gt;Undone-All&lt;/code&gt; button which for setting all todoList to undone. And the other one is &lt;code&gt;Edit&lt;/code&gt; button which is for the user to edit the description of todoList that they saved before. &lt;strong&gt;Also&lt;/strong&gt;, I fixed the issue of dark/light mode toggle. The program will keep the same mode all the time unless the user click on the switch button. &lt;strong&gt;Finally&lt;/strong&gt;, I add a new simple footer and change the date time format for the program.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Feelings
&lt;/h3&gt;

&lt;p&gt;This is best I can do so far in a limited time. &lt;strong&gt;However&lt;/strong&gt;, I think I could do it better if I started to work on it earlier. &lt;strong&gt;Anyway&lt;/strong&gt;, this is a good experience for me as well. I learned that I should ask the questions instead of guessing by myself. &lt;strong&gt;Also&lt;/strong&gt;, I reviewed and learned a lot of &lt;code&gt;DOM&lt;/code&gt; and &lt;code&gt;HTML&lt;/code&gt; knowledge thanks to this final project. &lt;/p&gt;

&lt;p&gt;Link to the PR I made: [&lt;a href="https://github.com/nirajacharyaa/todo-app/pull/42"&gt;PR #42&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Progress of Release 0.4</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Thu, 16 Dec 2021 18:12:28 +0000</pubDate>
      <link>https://dev.to/derekjxy/progress-of-release-04-51gc</link>
      <guid>https://dev.to/derekjxy/progress-of-release-04-51gc</guid>
      <description>&lt;p&gt;As I filed the issue on the project that I picked for the final assignment. I started to work on it since I'm late on it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;first thing&lt;/strong&gt; I was going to do to improve the programs was add a new &lt;code&gt;Undone-All&lt;/code&gt; button. It's basically as its name, undoning the todoList in the program. &lt;strong&gt;The first step&lt;/strong&gt; was I tried to add a need button in the main html -- &lt;code&gt;index.html&lt;/code&gt;. And when I run the program after that, it was really funny though:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fyg_wANm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z9630hhqlptdwds3a5zk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fyg_wANm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z9630hhqlptdwds3a5zk.jpg" alt="undone_button" width="843" height="128"&gt;&lt;/a&gt;&lt;br&gt;
And I found that I need to add some &lt;strong&gt;CSS&lt;/strong&gt; for it as well! So, I just add a new CSS. But when I run the program again after I added the new CSS, I &lt;strong&gt;realized&lt;/strong&gt; I should have a same CSS format as the &lt;code&gt;All-Done&lt;/code&gt; button that the project currently having. So, instead of adding a new CSS, I just add the &lt;code&gt;Undone-All&lt;/code&gt; button class name to the &lt;code&gt;Done-All&lt;/code&gt; button. In this way, I will have a some button format that the original project having.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z2QfblHq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nep5o0qhrbnqaucnbmc1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z2QfblHq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nep5o0qhrbnqaucnbmc1.jpg" alt="CSS" width="297" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After that&lt;/strong&gt;, I tried to work on the &lt;code&gt;Edit&lt;/code&gt; button which is a new feature for the program. I was planning to add a &lt;code&gt;Edit&lt;/code&gt; button for the user to edit the &lt;strong&gt;description&lt;/strong&gt; of the todoList. This is the &lt;strong&gt;most difficult&lt;/strong&gt; part I had for this final assignment. &lt;br&gt;
&lt;strong&gt;At the beginning&lt;/strong&gt;, I tried to add a new button to each todoList, which will implement in the &lt;code&gt;app.js&lt;/code&gt; file. I followed the logic that the current program having to make the new &lt;code&gt;edit&lt;/code&gt; button. And it turns out as the &lt;code&gt;Undone-All&lt;/code&gt; button I made before, it's in a pretty ugly format. Also, I didn't include the &lt;code&gt;fa&lt;/code&gt; class that the program using, which make the &lt;code&gt;edit&lt;/code&gt; button looks so weird. &lt;strong&gt;Therefore&lt;/strong&gt;, I use google and the stylesheet link that the program provided to update my initial &lt;code&gt;Edit&lt;/code&gt; button. &lt;strong&gt;Finally&lt;/strong&gt;, I decided to make the button with a &lt;strong&gt;pencil symbol&lt;/strong&gt; to inform the user that this will be a edit button. Also, I added some CSS to make it look nicer. And here is the final look of my new &lt;code&gt;edit&lt;/code&gt; button:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8nhd19VX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a1j7v96s83cz8n9ouwwq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8nhd19VX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a1j7v96s83cz8n9ouwwq.jpg" alt="edit_button" width="760" height="111"&gt;&lt;/a&gt;&lt;br&gt;
When I finished the outlook of the &lt;code&gt;Edit&lt;/code&gt; button, I started to add a function for it. &lt;strong&gt;Honestly&lt;/strong&gt;, I was planning to make the todoList to be editable. But the reality is, I can't find to a way to do that because it's inside a &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;. So I tried to enable the &lt;code&gt;edit&lt;/code&gt; button in a different way, which is using the &lt;code&gt;prompt()&lt;/code&gt; function. The &lt;code&gt;prompt()&lt;/code&gt;function allows the user to input a new text as an update for the old todoList.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aKI6o5tV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lduq87880xxwhkljibz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aKI6o5tV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6lduq87880xxwhkljibz.jpg" alt="prompt" width="452" height="178"&gt;&lt;/a&gt;&lt;br&gt;
And the next thing I found out was all of those functions for the todoList buttons are in a same function scope, which is not a good practice. &lt;strong&gt;Thus&lt;/strong&gt;, I divided the origin function for the todoList buttons into 3 different functions:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pHDXzRSy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5xj7zlxiihiqzlm1d4ao.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pHDXzRSy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5xj7zlxiihiqzlm1d4ao.jpg" alt="functions" width="434" height="166"&gt;&lt;/a&gt;&lt;br&gt;
After some personal testing for the &lt;code&gt;edit&lt;/code&gt; button, I found a new problem which related to the date time that the origin program having. The &lt;strong&gt;date time format&lt;/strong&gt; that the program using was a dynamic format, if the current date time is "2021-5-12 00:00:08", then the program will display the time as "2021/5/12 0:0:8". Although this is not wrong, it will be better if we can have a specific date time format such as "YYYY/MM/DD HH:MM:SS". So, if the current date time is "2021-5-12 00:00:08", this time it will display "2021/05/12 00:00:08". &lt;strong&gt;On one hand&lt;/strong&gt;, it will be better to have a same date time format for the user. &lt;strong&gt;On the other hand&lt;/strong&gt;, it can provide a good format to the programmer to catch date time string. Therefore, I updated the date time function to :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function now() {
  let today = new Date();
  var year = today.getFullYear();
  var month = (today.getMonth() + 1);
  var dateTime = today.getDate();

  var date = year;
  date += ((month &amp;lt; 10) ? '/0' : "/") + month;
  date += ((date &amp;lt; 10) ? '/0' : "/") + dateTime;

  var hour = today.getHours();
  var minute = today.getMinutes();
  var second = today.getSeconds();

  var time = ((hour &amp;lt; 10) ? '0' : '') + hour;
    if (hour == 0)
      time = '00';
  time += ((minute &amp;lt; 10) ? ':0' : ':') + minute;
  time += ((second &amp;lt; 10) ? ':0' : ':') + second;
  return `${date}\n${time}`;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After adding the new buttons&lt;/strong&gt;, I had an easy improvement for this program, which is adding a &lt;strong&gt;simple footer&lt;/strong&gt;. &lt;br&gt;
It's a simple step which only required a few lines of code in the &lt;code&gt;index.html&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finally&lt;/strong&gt;, I moved on to &lt;strong&gt;fix the issue&lt;/strong&gt; that when the user change the display mode to dark mode, it will &lt;strong&gt;automatically change back to the light mode&lt;/strong&gt; when the user refresh the page. Not only the user refresh the page would cause that issue, but also when the user click on the &lt;code&gt;Done-All&lt;/code&gt; button or the &lt;code&gt;Undone-All&lt;/code&gt; button, it will use the &lt;code&gt;confirm()&lt;/code&gt; function which also will refresh the page and change the display mode from dark mode to light mode automatically even thought that's not what the user looking for. In order to fix this issue, I need to find some information from the &lt;strong&gt;Internet&lt;/strong&gt;, because it has been a long time that I never worked on dark/light mode toggle. &lt;strong&gt;Also&lt;/strong&gt;, I even watched some videos from &lt;strong&gt;Youtube&lt;/strong&gt; to help me figure out the issue. I spent times to learn, to practice and to fulfill it. And finally, I solved the problem by adding these lines of code:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9JeTbwen--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vdmjbr5ti3grpcz981ey.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9JeTbwen--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vdmjbr5ti3grpcz981ey.jpg" alt="dark/light_toggle" width="525" height="739"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When I wrapped up the project&lt;/strong&gt;, I found another new issue, which is when the user click on the &lt;code&gt;Clear&lt;/code&gt; button, the &lt;strong&gt;same situation&lt;/strong&gt; of change the display mode back to light mode happens again. So I go into the &lt;code&gt;Clear&lt;/code&gt; function. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ls4LH4I_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q0hnj1uqy2mcz3lsaax7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ls4LH4I_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q0hnj1uqy2mcz3lsaax7.jpg" alt="clear_function" width="435" height="126"&gt;&lt;/a&gt;&lt;br&gt;
In this function, we are going to &lt;strong&gt;clear all the information or data&lt;/strong&gt; that saved into the localStorage, which including the display mode data. As I mentioned above, this is not a good practice. &lt;strong&gt;Therefore&lt;/strong&gt;, I need to update this function as well even though I didn't have this move in my plan. After a few times of research, I learned that the &lt;code&gt;localStorage.clear()&lt;/code&gt; is deleting all the data saved in the localStorage. But the goal for this button or this function is to delete all the saved todoList. So, I decided to update the function to like this:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_po9cMi9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7h3d4c0tokrhdz8e5lkn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_po9cMi9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7h3d4c0tokrhdz8e5lkn.jpg" alt="new_clear_function" width="424" height="109"&gt;&lt;/a&gt;&lt;br&gt;
In this way, the &lt;code&gt;Clear&lt;/code&gt; button will only delete all the saved todoList, and it will keep the same display mode that they user currently using.&lt;/p&gt;

&lt;p&gt;Link to the &lt;strong&gt;PR&lt;/strong&gt; I made : [&lt;a href="https://github.com/nirajacharyaa/todo-app/pull/42"&gt;PR#42&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Preparing for the Release 0.4</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Thu, 16 Dec 2021 17:05:11 +0000</pubDate>
      <link>https://dev.to/derekjxy/preparing-for-the-release-04-2gjo</link>
      <guid>https://dev.to/derekjxy/preparing-for-the-release-04-2gjo</guid>
      <description>&lt;p&gt;Regarding to the &lt;strong&gt;final assignment&lt;/strong&gt; we have in &lt;strong&gt;OSD600&lt;/strong&gt;. Due to my misunderstanding of the class requirements, I started to work on this final assignment a little bit &lt;strong&gt;late&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For the this &lt;strong&gt;Release 0.4&lt;/strong&gt; we have as a final assignment, we are going to contribute on &lt;strong&gt;Github&lt;/strong&gt; again. And this time we have a more &lt;em&gt;open options&lt;/em&gt; for the project we are going to work with. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Because of&lt;/strong&gt; the lateness, I just picked one of the projects that my classmates worked for the final assignment. &lt;strong&gt;But&lt;/strong&gt; I do realized that I should have a different content or contribution on the project. The program I chose is a HTML program. It's a &lt;strong&gt;TODO List&lt;/strong&gt; program. It's more like a &lt;strong&gt;Note&lt;/strong&gt; application we have on our phone. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After&lt;/strong&gt; I go through the program, I found some issues are good for me to make a improvement. &lt;strong&gt;For instance&lt;/strong&gt;, the dark mode and light mode toggle is something wrong. If the user switch the mode to dark mode by clicking the switch button, and the user refresh the page. Then the page will automatically change back to the light mode no matter what. And this obviously is &lt;strong&gt;not a good practice&lt;/strong&gt;. &lt;strong&gt;Therefore&lt;/strong&gt;, I planned to fix this issue. &lt;strong&gt;Also&lt;/strong&gt;, I found that there are only two options for the user to do with the todoList that they are having. And I believe that it would be better if we have a &lt;code&gt;Edit&lt;/code&gt; button to edit the todoList that the user currently having. &lt;strong&gt;So&lt;/strong&gt;, this is going to be one of my improvement action for this project as well. &lt;strong&gt;Finally&lt;/strong&gt;, I saw that there is no footer in the html project. Personally, I think having a footer is always a good practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Therefore&lt;/strong&gt;, I set up the gold that I'm going to help improve the project in such list:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WNtBlN2t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7c5qsjthq2lurygsvnmy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WNtBlN2t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7c5qsjthq2lurygsvnmy.jpg" alt="Issue" width="880" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to the Repo I worked with :[&lt;a href="https://github.com/nirajacharyaa/todo-app"&gt;todo-app&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Fourth Hacktoberfest Contribution</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Fri, 10 Dec 2021 18:51:16 +0000</pubDate>
      <link>https://dev.to/derekjxy/fourth-hacktoberfest-contribution-3c8i</link>
      <guid>https://dev.to/derekjxy/fourth-hacktoberfest-contribution-3c8i</guid>
      <description>&lt;p&gt;For the &lt;strong&gt;last Hacktoberfest Contribution&lt;/strong&gt; I have in here is about a program &lt;strong&gt;improvement&lt;/strong&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Issue
&lt;/h3&gt;

&lt;p&gt;For this program, the issue that I interested in was helping the repository owner to add a &lt;strong&gt;Thai&lt;/strong&gt; translation to the program. &lt;/p&gt;

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

&lt;h3&gt;
  
  
  My Solution
&lt;/h3&gt;

&lt;p&gt;Due to the repository owner already provided a &lt;strong&gt;clear contribution instruction&lt;/strong&gt;. I just needed to &lt;strong&gt;follow&lt;/strong&gt; the step they suggested.&lt;br&gt;
&lt;strong&gt;However&lt;/strong&gt;, there was one thing the stopped me for a while. And that was the language that I assigned was Thai, which is a totally &lt;strong&gt;new language&lt;/strong&gt; to me. I don't speak Thai or understand Thai. Therefore, I need to get help from the Internet translation. &lt;br&gt;
&lt;strong&gt;Because&lt;/strong&gt; I would like use the global translation all the time, I know that sometimes some translations just don't any sense to the original language speaker. &lt;strong&gt;Then&lt;/strong&gt; I just used two different translation application to help translate some English words to Thai words. For each Thai translation I made, I &lt;strong&gt;always compared&lt;/strong&gt; two different results from two translation applications. &lt;strong&gt;Moreover&lt;/strong&gt;, I used the words that translated from the translation applications to translate into my first language as well. &lt;br&gt;
&lt;strong&gt;In this way&lt;/strong&gt;, I can make sure the Thai translation will make sense to any Thai people or people who speak Thai.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Feelings
&lt;/h3&gt;

&lt;p&gt;This is an &lt;strong&gt;interesting experience&lt;/strong&gt; for me. Improving a program with the totally new language(Thai) is like an &lt;strong&gt;adventure&lt;/strong&gt; to me. Everything is new and I think this will be the &lt;strong&gt;same&lt;/strong&gt; when it comes to the &lt;strong&gt;work&lt;/strong&gt; in real life I have in the &lt;strong&gt;future&lt;/strong&gt;. Although this is not a complicated issue, it gave me a new experience of working in a new state. &lt;/p&gt;

&lt;p&gt;Link to the Repo I worked on: [&lt;a href="https://github.com/Crease29/pageliner"&gt;pageliner&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>NPM Package</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Fri, 26 Nov 2021 23:58:15 +0000</pubDate>
      <link>https://dev.to/derekjxy/npm-package-3929</link>
      <guid>https://dev.to/derekjxy/npm-package-3929</guid>
      <description>&lt;p&gt;This week, we are going to have out &lt;strong&gt;Lab 10&lt;/strong&gt; in &lt;code&gt;OSD600&lt;/code&gt;. Lab 10 is quite &lt;strong&gt;different&lt;/strong&gt; from any other previous lab I had in OSD600. Lab 10 is not about coding or adding new feature to my static site generator. It's about &lt;strong&gt;publishing&lt;/strong&gt; my SSG to &lt;a href="https://www.npmjs.com/"&gt;&lt;strong&gt;npm&lt;/strong&gt;&lt;/a&gt;. &lt;br&gt;
Once I published my SSG to the &lt;strong&gt;npm&lt;/strong&gt;, people would be able to use my SSG as long as they install my package by the command: &lt;code&gt;npm i my-first-ssg-1&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure
&lt;/h3&gt;

&lt;p&gt;After reading the &lt;strong&gt;Lab 10&lt;/strong&gt; &lt;em&gt;instruction&lt;/em&gt; as usual, I just started to read the documentation about the &lt;a href="https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry"&gt;npm&lt;/a&gt;. Because I have my SSG in a good set, I don't need to create or modify that much things when I followed the steps from the documentation. &lt;/p&gt;

&lt;p&gt;And then, I just tried to &lt;strong&gt;publish&lt;/strong&gt; my SSG. &lt;strong&gt;However&lt;/strong&gt;, because this is the first time I work on publishing package to &lt;strong&gt;npm&lt;/strong&gt;. I have not idea how it works. &lt;br&gt;
&lt;strong&gt;Therefore&lt;/strong&gt;, I just run the command &lt;code&gt;npm publish&lt;/code&gt; directly, which comes up with my first error:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_xroOHkD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovn72wvgrtdkezlnouhy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_xroOHkD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovn72wvgrtdkezlnouhy.png" alt="error1" width="872" height="238"&gt;&lt;/a&gt;&lt;br&gt;
So I just ask my friend what am I supposed to do in this situation. And then my friend replied me, &lt;strong&gt;"Did you login your npm accont?"&lt;/strong&gt; And at that time, I just realized that &lt;strong&gt;I don't even have a npm account&lt;/strong&gt;. &lt;br&gt;
So, I just use the link my friend sent me to sign up a &lt;strong&gt;npm&lt;/strong&gt; account. And tried to publish it again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;However&lt;/strong&gt;, after run the command 'npm publish'. There was a new error comes up: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5Ssy5hkW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uw0ysivo9fwvu6yzuntk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5Ssy5hkW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uw0ysivo9fwvu6yzuntk.png" alt="error2" width="880" height="287"&gt;&lt;/a&gt;&lt;br&gt;
This time, I prefer to find the solution from the Internet. Then, I just &lt;em&gt;googled&lt;/em&gt; this situation from &lt;a href="https://stackoverflow.com/"&gt;Stack Overflow&lt;/a&gt;. And I found that, the reason for the error above was &lt;strong&gt;I didn't verify my npm account&lt;/strong&gt;. So I verified my &lt;strong&gt;npm&lt;/strong&gt; account through the &lt;strong&gt;e-mail&lt;/strong&gt; they sent me. And finally, I can publish my SSG to &lt;strong&gt;npm&lt;/strong&gt; &lt;strong&gt;successfully&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;After my SSG package published to &lt;strong&gt;npm&lt;/strong&gt;. I followed these &lt;a href="https://docs.npmjs.com/creating-node-js-modules"&gt;steps&lt;/a&gt; to test my package. Fortunately, this time I didn't any errors. I can test my package smoothly.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qzl8VM1E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/14v0n1jszr9hbzjr6vwp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qzl8VM1E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/14v0n1jszr9hbzjr6vwp.png" alt="test" width="698" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, I realized that I need to &lt;strong&gt;update&lt;/strong&gt; my &lt;code&gt;README.MD&lt;/code&gt; for the &lt;strong&gt;npm&lt;/strong&gt; package. I thought I can delete the package and then remake it. But the reality is, I need to wait for &lt;strong&gt;24 hours&lt;/strong&gt; after I &lt;strong&gt;deleted&lt;/strong&gt; the package. &lt;strong&gt;Therefore&lt;/strong&gt;, instead of using the same name as my SSG program name "&lt;strong&gt;my-first-ssg&lt;/strong&gt;", I need to create a new package with a different name for my package "&lt;strong&gt;my-first-ssg-1&lt;/strong&gt;". &lt;br&gt;
After I recreate a &lt;strong&gt;npm&lt;/strong&gt; package, I just &lt;strong&gt;update&lt;/strong&gt; the content in my &lt;code&gt;README.MD&lt;/code&gt; file and then used the command: &lt;code&gt;npm publish&lt;/code&gt; to make updates to the package I had in &lt;strong&gt;npm&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--chUdXazM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q7ynrfe03cv08h0juedl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--chUdXazM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q7ynrfe03cv08h0juedl.png" alt="update" width="817" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Feelings
&lt;/h3&gt;

&lt;p&gt;I would say this is a &lt;strong&gt;simple&lt;/strong&gt; and &lt;strong&gt;tricky&lt;/strong&gt; lab. The simple aspect is I don't need to code anything for this lab. But the tricky aspect is there is &lt;strong&gt;no any example&lt;/strong&gt; as a reference to accomplish this lab. And that is the reason I suffered some stupid errors. &lt;strong&gt;However&lt;/strong&gt;, I think this is a correct way to learn stuff, because we won't have that much example when I work in a company. I think this is a good practice for us to ready for solve problems in the workplace in the future. &lt;strong&gt;Also&lt;/strong&gt;, I think lab 10 is very useful. I learned that we can use &lt;strong&gt;npm&lt;/strong&gt; package to publish our code so that other people can use it by running 1 simple command &lt;code&gt;npm i packagename&lt;/code&gt;. And they don't need to clone my code and build my project to run it locally. &lt;br&gt;
It's a very convenience way to allow people to use my package!&lt;/p&gt;

&lt;p&gt;Link to my &lt;strong&gt;npm&lt;/strong&gt; package: [&lt;a href="https://www.npmjs.com/package/my-first-ssg-1"&gt;my-first-ssg-1&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>npm</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Code Reviews</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Fri, 19 Nov 2021 21:49:14 +0000</pubDate>
      <link>https://dev.to/derekjxy/code-reviews-2gop</link>
      <guid>https://dev.to/derekjxy/code-reviews-2gop</guid>
      <description>&lt;p&gt;In this &lt;strong&gt;Release 0.3&lt;/strong&gt;, there are 3 different requirements. And the &lt;em&gt;__third one&lt;/em&gt;_ is about &lt;strong&gt;Code Review&lt;/strong&gt;. For this code review, we are required to review some &lt;code&gt;PR&lt;/code&gt; from &lt;strong&gt;other students created&lt;/strong&gt;. And the main &lt;strong&gt;purpose&lt;/strong&gt; of this is to help &lt;strong&gt;improve&lt;/strong&gt; their PR so that they can get merged. And for me, I had made &lt;strong&gt;two&lt;/strong&gt; code reviews in two different PR. However, they are having a &lt;strong&gt;same issue&lt;/strong&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure
&lt;/h3&gt;

&lt;p&gt;For the code review section. &lt;strong&gt;The first step&lt;/strong&gt; I made was to check the PR that opened which means that they haven't got merged. And &lt;strong&gt;then&lt;/strong&gt; I just selected one of them. The &lt;code&gt;first PR&lt;/code&gt; I picked was called [&lt;a href="https://github.com/Seneca-ICTOER/IPC144/pull/102"&gt;Fix and Audit types.md&lt;/a&gt;]. And for the &lt;code&gt;second PR&lt;/code&gt; I picked was called[&lt;a href="https://github.com/Seneca-ICTOER/IPC144/pull/116"&gt;records-and-files.md&lt;/a&gt;].&lt;br&gt;
These two PRs had a same issue. And that is they didn't check the sentences in each paragraph &lt;strong&gt;carefully&lt;/strong&gt;. Due to all of these &lt;code&gt;md&lt;/code&gt; files generated by a &lt;a href="https://docusaurus.io/"&gt;Docusaurus&lt;/a&gt; -- a modern static website generator. And I found that each sentence that in a paragraph was break with &lt;strong&gt;2 spaces&lt;/strong&gt; which is not a normal practice in our daily life or even coding. This is a &lt;strong&gt;small issue&lt;/strong&gt; because although with two spaces to break sentences, it looks good in a real webpage. However, I believe that we should fix this issue because sometimes &lt;strong&gt;small issues matter&lt;/strong&gt;, especially when it comes to coding!&lt;/p&gt;

&lt;p&gt;Here is my suggestion:&lt;br&gt;
&lt;strong&gt;①&lt;/strong&gt;:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rHJdim3D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/36zduuplplnomxt7iupb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rHJdim3D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/36zduuplplnomxt7iupb.png" alt="Suggestion" width="880" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;②&lt;/strong&gt;:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FulKDyik--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/id662zalzcolht7npos0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FulKDyik--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/id662zalzcolht7npos0.png" alt="Code_Review" width="880" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Feelings
&lt;/h3&gt;

&lt;p&gt;What I had found is not a huge issue but a really &lt;strong&gt;tiny issue&lt;/strong&gt;. However, sometimes a tiny issue could cause a &lt;strong&gt;huge problem&lt;/strong&gt;. I think I would treat this code review as a &lt;strong&gt;reminder&lt;/strong&gt; to myself.&lt;br&gt;
&lt;strong&gt;"Never miss any small details!"&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>c</category>
      <category>github</category>
    </item>
    <item>
      <title> Internal Project Contribution</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Fri, 19 Nov 2021 21:12:03 +0000</pubDate>
      <link>https://dev.to/derekjxy/internal-project-contribution-4kcb</link>
      <guid>https://dev.to/derekjxy/internal-project-contribution-4kcb</guid>
      <description>&lt;p&gt;In this &lt;strong&gt;Release 0.3&lt;/strong&gt;, there are 3 different requirements. And the &lt;strong&gt;second one&lt;/strong&gt; is about &lt;strong&gt;Internal Project Contribution&lt;/strong&gt;. For this internal project contribution, I selected a repository that from &lt;code&gt;IPC144&lt;/code&gt;. And the issue that I selected was about Audit a &lt;code&gt;MD&lt;/code&gt; file. This &lt;code&gt;MD&lt;/code&gt; file is about the knowledge that we learn in &lt;strong&gt;IPC144&lt;/strong&gt;. And the topic I selected was &lt;code&gt;Two-Dimensional-Arrays&lt;/code&gt;. The &lt;strong&gt;reason&lt;/strong&gt; I picked this topics was I thought this is an &lt;strong&gt;interesting topic&lt;/strong&gt; and I wanted to &lt;strong&gt;review&lt;/strong&gt; the two-dimensional-arrays &lt;strong&gt;content&lt;/strong&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure
&lt;/h3&gt;

&lt;p&gt;Here is a checklist I created to this issue:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r8_1i6qd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a0gwlzpyyy83r3xhmxm7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r8_1i6qd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a0gwlzpyyy83r3xhmxm7.png" alt="Checklist" width="842" height="886"&gt;&lt;/a&gt;&lt;br&gt;
What I did was just follow the checklist. The first time that I read through the &lt;code&gt;two-dimensional-arrays.md&lt;/code&gt; file, I think that it looks good! But that doesn't right! Since there is an issue, it has to have some things to improve. So, I just read the &lt;code&gt;MD&lt;/code&gt; file again and I found some problems. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Firstly&lt;/strong&gt;, I found that the sentences that in each paragraph was &lt;strong&gt;break by two spaces&lt;/strong&gt;, which is not a normal way we do in our daily life. &lt;strong&gt;Secondly&lt;/strong&gt;, I found that the image that the &lt;code&gt;MD&lt;/code&gt; file using is &lt;strong&gt;missing a alt text&lt;/strong&gt;. &lt;strong&gt;Thirdly&lt;/strong&gt;, I found that the code examples in the &lt;code&gt;MD&lt;/code&gt; file are &lt;strong&gt;indented too much&lt;/strong&gt;. &lt;strong&gt;Last but not least&lt;/strong&gt;, I found that there are &lt;strong&gt;a few&lt;/strong&gt; &lt;code&gt;&amp;lt;br /&amp;gt;&lt;/code&gt; inside the &lt;code&gt;MD&lt;/code&gt; file. And I can't find any of of these problems above at the first time. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Since&lt;/strong&gt; there were many &lt;strong&gt;problems&lt;/strong&gt; I listed out after the second time of reading. I began to make &lt;strong&gt;improvements&lt;/strong&gt;. &lt;br&gt;
After solved the problems that I found at the second time of reading. I told myself, "Perhaps there are more improvement you can make after your third - forth times of reading." &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thus&lt;/strong&gt;, I read the &lt;code&gt;MD&lt;/code&gt; again after I fixed those problems. However, I only found two more issues after my forth times of reading. &lt;strong&gt;The first one&lt;/strong&gt; was the &lt;code&gt;MD&lt;/code&gt; file is lack of highlighting words. This is a reading for those students in IPC144, they are new to C language. And I believe that with some highlighting words, this documentation will be easier for them to read and learn! &lt;strong&gt;The second one&lt;/strong&gt; was the code example in the documentation again. I found that I can make some improvement to the for loop code with &lt;code&gt;{}&lt;/code&gt; so that they look better.&lt;br&gt;
After these two improvements I made, I decided to make the &lt;code&gt;Pull Request&lt;/code&gt;. I would like to ask help from other contributors. As long as I make the PR, they would have a chance to review my PR and they might come up with some better ideas to audit the &lt;code&gt;MD&lt;/code&gt; file!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Surprisingly&lt;/strong&gt;, I got 3 more &lt;a href="https://github.com/Seneca-ICTOER/IPC144/pull/108"&gt;suggestions&lt;/a&gt; from other contributors!&lt;br&gt;
&lt;strong&gt;①&lt;/strong&gt;: A solution to make the imagine looks nicer in dark mode!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iixfDsk8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ju7053kx76zjnn9ob7qe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iixfDsk8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ju7053kx76zjnn9ob7qe.png" alt="Image_In_Dark_Mode" width="880" height="783"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;②&lt;/strong&gt;: Edit the alt text and Update the Frontmatter!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Bkr8X8Qx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2fub7daaao1k1yu7g9j9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Bkr8X8Qx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2fub7daaao1k1yu7g9j9.png" alt="Image_description" width="880" height="480"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rcbWnzXY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96sutnccjbptup3ohq6l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rcbWnzXY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96sutnccjbptup3ohq6l.png" alt="Frontmatter" width="880" height="676"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;③&lt;/strong&gt;：Add admonition!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mLXEBNnO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vz25jax6okwiiqksmyl6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mLXEBNnO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vz25jax6okwiiqksmyl6.png" alt="Admonition" width="880" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The suggestions above are really &lt;strong&gt;good improvements&lt;/strong&gt; for the &lt;code&gt;MD&lt;/code&gt; file that I worked at. Therefore, I accepted the suggestions and update the &lt;code&gt;MD&lt;/code&gt; file based on their ideas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finally&lt;/strong&gt;, I combined all the improvements I made and all the suggestions from other friendly contributors together to make the final &lt;code&gt;PR&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Fortunately, the owner of the repository &lt;strong&gt;accepted my PR&lt;/strong&gt; and &lt;code&gt;merged&lt;/code&gt; it to the main repository &lt;strong&gt;in a short time&lt;/strong&gt;!&lt;/p&gt;

&lt;h3&gt;
  
  
  My Feelings
&lt;/h3&gt;

&lt;p&gt;This is an &lt;strong&gt;interesting&lt;/strong&gt; contribution. I'm really &lt;strong&gt;happy&lt;/strong&gt; that I can help to improve the documentation in the repository that belongs to my College. Also, I realized that &lt;strong&gt;making contributions with other people&lt;/strong&gt; is a very good way. Because &lt;em&gt;other people would see what you've missed at the first time&lt;/em&gt;. And sometimes that could be a &lt;em&gt;small issue&lt;/em&gt;, but sometimes that could be a &lt;strong&gt;huge issue&lt;/strong&gt;. &lt;br&gt;
And no matter what, having someone else to help contributing on &lt;code&gt;Github&lt;/code&gt; is always a &lt;strong&gt;good thing&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Link to the origin Repo I worked:[  &lt;a href="https://github.com/Seneca-ICTOER/IPC144"&gt;IPC144&lt;/a&gt;  ]&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>c</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>External Project Contribution</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Fri, 19 Nov 2021 19:56:30 +0000</pubDate>
      <link>https://dev.to/derekjxy/external-project-contribution-2dhh</link>
      <guid>https://dev.to/derekjxy/external-project-contribution-2dhh</guid>
      <description>&lt;p&gt;With the coming of &lt;strong&gt;November 1st&lt;/strong&gt;, we had our third assignment -- &lt;strong&gt;Release 0.3&lt;/strong&gt; in OSD600. In this release 0.3, there are &lt;strong&gt;3&lt;/strong&gt; different requirements. And the first one is about &lt;strong&gt;External Project Contribution.&lt;/strong&gt; &lt;br&gt;
For this external project contribution, I selected a repository that I worked with in &lt;strong&gt;Release 0.2&lt;/strong&gt;. It called &lt;a href="https://github.com/TogaTech/helpful.js"&gt;&lt;strong&gt;help.js&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This time, I worked at the issue about &lt;strong&gt;adding a testing method for objects&lt;/strong&gt;. "&lt;em&gt;We should have a method that finds the difference of two objects (any keys that are present in the second object are removed from the first)&lt;/em&gt;".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U3fJeoaI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5c13b0wgpsvqrf2xzdda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U3fJeoaI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5c13b0wgpsvqrf2xzdda.png" alt="Issue" width="880" height="413"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Procedure
&lt;/h3&gt;

&lt;p&gt;Due to I &lt;strong&gt;forked&lt;/strong&gt; this repository to my Giuhub account for my Release 0.2. I just need to &lt;strong&gt;pull all the new commits&lt;/strong&gt; that the origin repository made recently with the command &lt;code&gt;git pull origin main&lt;/code&gt;. And then I started to add a new test function based on the issue. &lt;/p&gt;

&lt;p&gt;At the beginning, I got stuck at "&lt;em&gt;How can I get the keys from an object?"&lt;/em&gt;. Therefore, I googled the solution from &lt;strong&gt;StackOverFlow&lt;/strong&gt;.&lt;br&gt;
There are some tips and ideas helped me to get the keys from an object. I used the method &lt;code&gt;Object.keys()&lt;/code&gt; and store it to an &lt;code&gt;array&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;    let array1 = Object.keys(object1);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then I just used &lt;strong&gt;for loop&lt;/strong&gt; to figure out whether there are some keys that present in the first object and the second object at the same time. &lt;strong&gt;If so&lt;/strong&gt;, I just need to remove them from the first object. However, there was one more issue comes up at that timing -- "&lt;em&gt;How do I remove those keys from the first object?&lt;/em&gt;" So, I searched the recommend ways on google again. And I found that I can use the word &lt;code&gt;delete&lt;/code&gt; to do that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    delete object1[array1[i]]; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code allows me to delete the keys in an object. And then I just add some test logic to the &lt;code&gt;test.js&lt;/code&gt;. &lt;br&gt;
&lt;strong&gt;While I testing my code&lt;/strong&gt;, I realized that my code would &lt;strong&gt;delete&lt;/strong&gt; the keys from an object &lt;strong&gt;permanently&lt;/strong&gt;. And I don't think that's a good practice for any programmer. &lt;strong&gt;Therefore&lt;/strong&gt;, I tried to add a &lt;code&gt;temporary object&lt;/code&gt; to my function, and let the temporary object equals to the first input object. Then I could delete keys from the temporary object so that it will not affect the original first input object.&lt;br&gt;
&lt;strong&gt;Surprisingly&lt;/strong&gt;, this logic didn't work as I expected. It does delete keys from  the temporary object, but it also deletes keys from the first input object! So, I just use an object that with same keys values again and again:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MCrcZSJB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t3fiubqx80jx16tstkyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MCrcZSJB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t3fiubqx80jx16tstkyz.png" alt="test_function" width="860" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After I made the tests run successfully, I read through the testing code in the program again. And I found out that I was using a &lt;strong&gt;different format&lt;/strong&gt;, which is a &lt;strong&gt;bad practice&lt;/strong&gt; when you are trying to help improve a program that you didn't make it. So, I just audit my code with the same format as they did.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ff6IrpA6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iohimbnd96v2etmssz3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ff6IrpA6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iohimbnd96v2etmssz3v.png" alt="PR_code" width="880" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My feelings
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Honestly&lt;/strong&gt;, this is a &lt;strong&gt;more challenged&lt;/strong&gt; issue for me. &lt;strong&gt;First of all&lt;/strong&gt;, I don't familiar with working on object in JavaScript. &lt;strong&gt;Second of all&lt;/strong&gt;, I don't have that much experience with contributing on Github. &lt;strong&gt;Last but no least&lt;/strong&gt;, I messed up the coding procedure at the beginning which is a really bad practice. I should read through the code before I do any coding stuff.&lt;br&gt;
&lt;strong&gt;Anyway&lt;/strong&gt;, this is a &lt;strong&gt;helpful&lt;/strong&gt; project for me. I learned how to get all the keys from an object and how to delete them. Also, I have more experience to contribute on &lt;strong&gt;Github&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Lind to the Repo I worked: &lt;a href="https://github.com/DerekJxy/helpful.js"&gt;[Helpful.js]&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>javascript</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Continuous Integration</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Fri, 19 Nov 2021 18:33:41 +0000</pubDate>
      <link>https://dev.to/derekjxy/continuous-integration-1mcg</link>
      <guid>https://dev.to/derekjxy/continuous-integration-1mcg</guid>
      <description>&lt;p&gt;This week, we are going to have out &lt;strong&gt;Lab 9&lt;/strong&gt; in &lt;code&gt;OSD600&lt;/code&gt;. Similar to the Lab 8, Lab 9 is about to &lt;strong&gt;improve&lt;/strong&gt; our SSG at Github.&lt;br&gt;
In this week, we learned something about the &lt;code&gt;Continuous Integration&lt;/code&gt; (CI). "&lt;em&gt;CI is a method whereby we build and run our tests (i.e., integrate everything in our project) automatically whenever anything is pushed to the repo, or a new pull request is made. With CI we do this continually and ideally on every change. This lets us monitor the effect of a given change and assess its quality.&lt;/em&gt;"&lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure
&lt;/h3&gt;

&lt;p&gt;In this week, we have only &lt;strong&gt;1&lt;/strong&gt; video to watch. After watching the video that related to the &lt;code&gt;Continuous Integration&lt;/code&gt; on &lt;strong&gt;Github&lt;/strong&gt;. &lt;em&gt;I have a clear idea how to make an action workflow and how it supposed to work.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Obviously&lt;/strong&gt;, the &lt;strong&gt;first step&lt;/strong&gt; I made was to create a new &lt;strong&gt;workflow&lt;/strong&gt; to my SSG. There wasn't that much things needed to do by myself. Most work were done by &lt;code&gt;Github&lt;/code&gt; &lt;strong&gt;automatically&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;My &lt;strong&gt;second step&lt;/strong&gt; was to create a new &lt;code&gt;PR&lt;/code&gt; to test my CI. Also, I made a new test file for the &lt;code&gt;mdNewFeature()&lt;/code&gt; function that I have in my SSG. I created a new test file and some test functions for it. After I could run all the tests successfully in my local machine, I made a pull request to my &lt;strong&gt;repository&lt;/strong&gt;. Here is a screenshot for the CI to check my PR:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V5PewFSe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9xl7rkc97qq2w72api7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V5PewFSe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9xl7rkc97qq2w72api7.png" alt="CI_Check_PR" width="880" height="547"&gt;&lt;/a&gt;&lt;br&gt;
Luckily, all my tests got checked so that I merged them to my repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After that&lt;/strong&gt;, I tried to make a test that with &lt;strong&gt;errors&lt;/strong&gt; to check my CI. I updated my code so that it will have an error when I run the tests. And then I made a PR to my repository. When &lt;strong&gt;Github&lt;/strong&gt; receive my PR, it will run the workflow automatically. It will check my PR to make sure it won't crush my original program. &lt;br&gt;
Well, there was an warning showed up as I &lt;strong&gt;expected&lt;/strong&gt;:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zEnLDd9t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4eitfg90cwny6j7m6tk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zEnLDd9t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4eitfg90cwny6j7m6tk0.png" alt="CheckWithErrors" width="880" height="531"&gt;&lt;/a&gt;&lt;br&gt;
And because there was an error with the PR, there is &lt;strong&gt;no way&lt;/strong&gt; I can &lt;strong&gt;merged&lt;/strong&gt; them to my program. Therefore, I just reset the wrong code to the right one. Then I made the PR again. And this time, it didn't show my the error anymore and I can merge it to my repository.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7FZ8KiRm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bsmf6euag88jsl9kdg2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7FZ8KiRm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bsmf6euag88jsl9kdg2a.png" alt="MergedPR" width="880" height="585"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Moreover&lt;/strong&gt;, for this Lab 9 we need to test other people's CI as well. I found my partner &lt;a href="https://github.com/ycechungAI/cmd-ssg"&gt;&lt;strong&gt;Eugene&lt;/strong&gt;&lt;/a&gt; through Slack. And we talked about what is the good idea for adding a new test function to each repository. &lt;strong&gt;Personally&lt;/strong&gt;, I just added a new small test function to my partner's program. It was a test function about testing what will happen if the user use the function with empty argument. Due to this is not a program that I made, I need to go through my partner's code and followed his logic to made up a test. It's slightly different when adding a test function to a program that you never participated in. But it became easy after you communicated with the program builder!&lt;/p&gt;

&lt;h3&gt;
  
  
  My Feelings
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;To be honest&lt;/strong&gt;, this is not a complicated lab, not at all. However, that doesn't mean it's a useless lab. In fact, I think this Lab 9 is a &lt;strong&gt;very useful&lt;/strong&gt; lab. It introduced me the &lt;code&gt;Continuous Integration&lt;/code&gt; (CI), which is a &lt;strong&gt;powerful tool&lt;/strong&gt; while work on Github. It can &lt;strong&gt;ensure&lt;/strong&gt; that every PR that the contributor made or the repository made will not &lt;strong&gt;crash&lt;/strong&gt; the program. And all of them would run automatically. &lt;br&gt;
&lt;strong&gt;This is a really good tool for me to work on Github in the future!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Link to my Repository:[&lt;a href="https://github.com/DerekJxy/My-First-SSG"&gt;My-First-SSG&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Testing in JavaScript</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Thu, 11 Nov 2021 03:18:25 +0000</pubDate>
      <link>https://dev.to/derekjxy/testing-in-javascript-46ao</link>
      <guid>https://dev.to/derekjxy/testing-in-javascript-46ao</guid>
      <description>&lt;p&gt;This week we are going to have our &lt;strong&gt;Lab 8&lt;/strong&gt;. Lab 8 is also introducing a &lt;strong&gt;new tool&lt;/strong&gt; to our SSG project. In lab 8, we are going to add some &lt;strong&gt;testing functions&lt;/strong&gt; for some functions that we have in our SSG. Talking about the testing stuff, &lt;em&gt;I have a little bit of experience in it&lt;/em&gt;. Because one of my issues that worked on &lt;a href="https://github.com/TogaTech/helpful.js/pull/20/files"&gt;&lt;strong&gt;Release 0.2&lt;/strong&gt;&lt;/a&gt; is about &lt;strong&gt;adding a new function&lt;/strong&gt; to the program and &lt;strong&gt;test it&lt;/strong&gt; before I made the &lt;code&gt;Pull Request&lt;/code&gt;. And the testing framework I used was &lt;code&gt;mocha&lt;/code&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Procedure
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;After&lt;/strong&gt; watching the &lt;strong&gt;videos&lt;/strong&gt; and read through the lab &lt;strong&gt;instruction&lt;/strong&gt;. I just chose the testing framework that I'm going to use in this Lab 8, which is &lt;code&gt;Jest&lt;/code&gt;. And then I just install the &lt;code&gt;Jest&lt;/code&gt; to my program by using the command &lt;code&gt;npm i jest&lt;/code&gt;. Also, I updated the &lt;strong&gt;"test"&lt;/strong&gt; command in the &lt;code&gt;package.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After&lt;/strong&gt; I add the &lt;code&gt;jest&lt;/code&gt; dependence, I tried to add a new testing function. &lt;strong&gt;However&lt;/strong&gt;, when I added a new test function for the function named &lt;code&gt;htmlGenerator&lt;/code&gt; I had in my program, I can't run it properly. It kept showing this error message:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rKT9FFC6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x5sc1qgdkoixn2u4fjye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rKT9FFC6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x5sc1qgdkoixn2u4fjye.png" alt="error" width="880" height="413"&gt;&lt;/a&gt;&lt;br&gt;
That's a &lt;strong&gt;weird error&lt;/strong&gt; for me. It's basically saying that the test function run correctly but there are also some errors. So, I just go back to the code that the error told me. And I &lt;strong&gt;realized&lt;/strong&gt; that I wrote my test function with the reference function in my &lt;code&gt;server.js&lt;/code&gt;, which is the main file of the program. It means that whenever I run the test function, it will run the program as well since I don't have a main function. This is a really bad coding style. Therefore, I decided to separate the &lt;code&gt;htmlGenerator()&lt;/code&gt; function to a new &lt;code&gt;htelGenerator.js&lt;/code&gt; file. So I can code between the &lt;code&gt;htelGenerator.js&lt;/code&gt; file and the &lt;code&gt;htelGenerator.test.js&lt;/code&gt; file. And then the problem solved!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After&lt;/strong&gt; adding a new testing function to my program, I tried to add &lt;strong&gt;more testing steps&lt;/strong&gt; to test &lt;code&gt;htmlGenerator()&lt;/code&gt; function. At the beginning, I thought that there were only &lt;strong&gt;2&lt;/strong&gt; testing steps. The first one was test the &lt;code&gt;htmlGenerator()&lt;/code&gt; function to generate a html result with a string html argument. And the second would be test the &lt;code&gt;htmlGenerator()&lt;/code&gt; function to generate a html result with a object html argument. &lt;strong&gt;However&lt;/strong&gt;, that sounds like &lt;strong&gt;too simple&lt;/strong&gt; as a lab. So, I just read the &lt;strong&gt;Lab 8 instruction&lt;/strong&gt; again. And that gave me some ideas for updating the testing functions of the &lt;code&gt;htmlGenerator()&lt;/code&gt;. For example, I can test the &lt;code&gt;htmlGenerator()&lt;/code&gt; function with bad value types. Something like: 'What if the type of one argument is not what I expected?', 'What if the type of all arguments are not what I expected?', 'What if the value of one argument is empty or undefined?', etc... Also, I need to update the code inside the &lt;code&gt;htmlGenerator()&lt;/code&gt; function. Finally, I got 7 test functions for the &lt;code&gt;htmlGenerator()&lt;/code&gt; function I have in my program. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zMzzDU9m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zllgt1866ohkw3wm4qb5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zMzzDU9m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zllgt1866ohkw3wm4qb5.png" alt="test" width="635" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In addition&lt;/strong&gt;, I found an &lt;strong&gt;interesting&lt;/strong&gt; stuff from this Lab 8. There is a tool called &lt;code&gt;Coverage&lt;/code&gt;. It's a great tool to generate a &lt;strong&gt;coverage report&lt;/strong&gt; about the testing functions. It will also shows the &lt;code&gt;Uncovered&lt;/code&gt; line(s) of code in the testing functions you created! In my program, if I run the coverage with the command that I set up &lt;code&gt;npm run coverage&lt;/code&gt;, it will shows something like the following:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6zqHQSzG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7xvdxsggn31nocwlv8g1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6zqHQSzG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7xvdxsggn31nocwlv8g1.png" alt="coverage" width="714" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Feelings
&lt;/h3&gt;

&lt;p&gt;I think this is a really &lt;strong&gt;helpful&lt;/strong&gt; lab for me. I learned how to &lt;code&gt;import&lt;/code&gt; and &lt;code&gt;export&lt;/code&gt; &lt;strong&gt;functions&lt;/strong&gt; correctly between two files, and I learned how to &lt;code&gt;create testing functions&lt;/code&gt; for a specific function in a program. Moreover, I will have a more clearer idea for testing a function in a program next time!&lt;/p&gt;

&lt;p&gt;Link to my Repo :&lt;a href="https://github.com/DerekJxy/My-First-SSG"&gt;[My-First-SSG]&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Prettier &amp; ESlint</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Fri, 05 Nov 2021 16:11:36 +0000</pubDate>
      <link>https://dev.to/derekjxy/prettier-eslint-4ebj</link>
      <guid>https://dev.to/derekjxy/prettier-eslint-4ebj</guid>
      <description>&lt;p&gt;This is the first week that we came back from the study week. And we have our &lt;strong&gt;Lab 7&lt;/strong&gt; in this week. Lab 7 is not about coding new stuff or contributing on other people's repository. Lab 7 is about &lt;strong&gt;formatting&lt;/strong&gt; the code we have from the SSG or I can say it is making it &lt;strong&gt;looks better&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Main Extensions
&lt;/h2&gt;

&lt;p&gt;There are &lt;strong&gt;two&lt;/strong&gt; main extensions we are going to use in this &lt;strong&gt;Lab 7&lt;/strong&gt;. We are going to apply &lt;code&gt;prettier&lt;/code&gt; and &lt;code&gt;eslint&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Procedure
&lt;/h2&gt;

&lt;p&gt;Honestly, although this is not a complicated lab, it &lt;em&gt;cost me a lot of time&lt;/em&gt;. And the reason for that was I &lt;em&gt;got stuck&lt;/em&gt; at &lt;strong&gt;testing&lt;/strong&gt; my code. After read over the instruction of the Lab 7, I started to &lt;strong&gt;watch the video&lt;/strong&gt; that our professor provided. And I learned how &lt;strong&gt;effective&lt;/strong&gt; &lt;code&gt;prettier&lt;/code&gt; and &lt;code&gt;eslint&lt;/code&gt; would be. I think these are pretty &lt;strong&gt;powerful&lt;/strong&gt; tool for any programmers. It can help us keep a same formatting when we coding with a huge team project. Also, it would save us a lot of time since they are very good at finding those tiny mistakes.&lt;/p&gt;

&lt;p&gt;My &lt;strong&gt;first difficulty&lt;/strong&gt; was no matter how I modify my &lt;code&gt;.prettierrc.json&lt;/code&gt; file, it keep showing me this error message:&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%2Fs5wc8rd22ij154zf0n52.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%2Fs5wc8rd22ij154zf0n52.png" alt="error"&gt;&lt;/a&gt;&lt;br&gt;
And I had no idea how to fix it. I asked my friend, I googled it, or even I rewrite the code inside the &lt;code&gt;.prettierrc.json&lt;/code&gt; file, none of them would work. And the my friend suggested me to &lt;strong&gt;delete&lt;/strong&gt; the file and &lt;strong&gt;remake&lt;/strong&gt; it. I didn't think that would work but I still give it a shot. Luckily, that solution worked! &lt;em&gt;Although I don't know the reason for that, even up until now.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My &lt;strong&gt;second difficulty&lt;/strong&gt; was testing my program after I added the code for &lt;code&gt;prettier&lt;/code&gt;. I installed the &lt;code&gt;prettier&lt;/code&gt; to my program, and I configured it. Also, I added a new "one-step" solution for running my formatter on the project from the command line. &lt;strong&gt;However&lt;/strong&gt;, I got stuck at running &lt;code&gt;prettier&lt;/code&gt;. Due to I'm new to this extension, and I didn't find the example from the materials that our professor provided. So I just tried whatever come to my mind. I tried &lt;code&gt;npx prettier&lt;/code&gt;, I tried &lt;code&gt;npm prettier server.js&lt;/code&gt;, I tried &lt;code&gt;npx prettier server.js&lt;/code&gt;, and &lt;em&gt;so on...&lt;/em&gt; &lt;strong&gt;But none of them could run.&lt;/strong&gt; And finally, after &lt;strong&gt;20 minutes&lt;/strong&gt; trying, I typed &lt;code&gt;npm run prettier&lt;/code&gt;, and it worked! And then I just &lt;code&gt;commit&lt;/code&gt; my code through &lt;code&gt;Git&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lastly&lt;/strong&gt;, when I set up my code for the &lt;code&gt;eslint&lt;/code&gt; and try to run it. It returned my this &lt;strong&gt;error&lt;/strong&gt; message:&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%2Fvdkgujwso7igrze4kaos.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%2Fvdkgujwso7igrze4kaos.png" alt="eslint error"&gt;&lt;/a&gt;&lt;br&gt;
It was telling that I had an undefined variable in my program. I was thinking to &lt;strong&gt;rewrite&lt;/strong&gt; my code to fix this error, but that would &lt;strong&gt;change too many lines&lt;/strong&gt; of code in my program. And then I realized that I can just simply define the variable globally, then the problem would fixed. So I just read through my program again. And then I found that what I need to do is use &lt;strong&gt;&lt;code&gt;var&lt;/code&gt;&lt;/strong&gt; to define the variable globally. And then the problem solved!&lt;/p&gt;

&lt;h2&gt;
  
  
  My Feelings
&lt;/h2&gt;

&lt;p&gt;I don't think this is a &lt;em&gt;complicated&lt;/em&gt; lab. It doesn't have a long instruction, or a long coding requirement. It's just about some small steps to &lt;strong&gt;add new extensions&lt;/strong&gt; to my program. However, I do think this is a &lt;strong&gt;tricky&lt;/strong&gt; lab. Because it's very strict about &lt;strong&gt;small stuffs&lt;/strong&gt;. Sometimes maybe just one different letter would cause an issue, and it would cost you 10 - 30 minutes to fix it. Anyway, through this Lab 7, I got familiar to add the &lt;code&gt;prettier&lt;/code&gt; and &lt;code&gt;eslint&lt;/code&gt; to a &lt;code&gt;JavaScript&lt;/code&gt; program!&lt;/p&gt;

&lt;p&gt;Link to my Repo : &lt;a href="https://github.com/DerekJxy/My-First-SSG" rel="noopener noreferrer"&gt;[My-First-SSG]&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>javascript</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Third Hacktoberfest Contribution</title>
      <dc:creator>DerekJxy</dc:creator>
      <pubDate>Mon, 01 Nov 2021 00:02:27 +0000</pubDate>
      <link>https://dev.to/derekjxy/third-hacktoberfest-contribution-4k5g</link>
      <guid>https://dev.to/derekjxy/third-hacktoberfest-contribution-4k5g</guid>
      <description>&lt;p&gt;After accomplished the &lt;strong&gt;first 2 Issues&lt;/strong&gt; I found on &lt;strong&gt;Github&lt;/strong&gt;. I tried to find some issues that are &lt;strong&gt;more interesting&lt;/strong&gt;. The third issue I found for the &lt;strong&gt;Release 0.2&lt;/strong&gt; was a &lt;code&gt;Java program&lt;/code&gt;. It's about creating a website that contains a &lt;strong&gt;SUDOKU&lt;/strong&gt; game. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V2hXnjdJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ahu04q45zpy2ymh0lmf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V2hXnjdJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ahu04q45zpy2ymh0lmf.png" alt="Game" width="408" height="392"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Issue
&lt;/h2&gt;

&lt;p&gt;For this program, the issue that I interested in was helping the repository owner to add a &lt;strong&gt;Github logo&lt;/strong&gt; on the webpage footer. And it should link to the github repository.&lt;a href="https://github.com/stefanoskapa/SudokuBase/issues/9#issuecomment-955651180"&gt;[Issue #9]&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aMyTQTp5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77pqnz0or33kksk3a2lh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aMyTQTp5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77pqnz0or33kksk3a2lh.png" alt="Issue description" width="880" height="206"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  My Solution
&lt;/h2&gt;

&lt;p&gt;After go through the code of this program. I assumed that this program will reuse its &lt;code&gt;footer&lt;/code&gt; for many and many times. Therefore, I could just update the code inside the footer they provided to solve this problem.&lt;br&gt;
The file that I updated was &lt;code&gt;footer.jsp&lt;/code&gt;. And the code I added was&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            &amp;lt;a href="https://github.com/stefanoskapa/SudokuBase"&amp;gt;
            &amp;lt;img src="https://ctl.s6img.com/society6/img/hNqP40bUA0DVJY-drlMuI_MylEc/w_1500/prints/~artwork/s6-original-art-uploads/society6/uploads/misc/8e29a2e79387449caa28090d71f489e3/~~/github-logo-prints.jpg" alt="logo" height="30"&amp;gt;
                Github&amp;lt;/a&amp;gt; |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After I added these few lines of code, every webpages that the program have will have a &lt;strong&gt;Github logo&lt;/strong&gt; on the footer like this :&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cAMxIL90--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nwsk5rqb4xmeh71tjrts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cAMxIL90--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nwsk5rqb4xmeh71tjrts.png" alt="Screeshoot" width="322" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Feelings
&lt;/h2&gt;

&lt;p&gt;This is an &lt;strong&gt;interesting program&lt;/strong&gt; for me. I like to play &lt;strong&gt;Sudoku&lt;/strong&gt; in my free time. I felt &lt;strong&gt;excited&lt;/strong&gt; to make contribution to a program that I like. Also, this is the first time that I help fix an issue of a &lt;code&gt;Java&lt;/code&gt; program. It gains me experience of working in a &lt;strong&gt;Java&lt;/strong&gt; program on &lt;strong&gt;Github&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Link to the Repo I worked on: &lt;a href="https://github.com/stefanoskapa/SudokuBase"&gt;[SudokuBase]&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>java</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
