<?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: Gulnur Baimukhambetova</title>
    <description>The latest articles on DEV Community by Gulnur Baimukhambetova (@gulyapulya).</description>
    <link>https://dev.to/gulyapulya</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%2F927815%2F8f7dcbd5-f9cc-4a66-b7e9-3954795fdd07.jpeg</url>
      <title>DEV Community: Gulnur Baimukhambetova</title>
      <link>https://dev.to/gulyapulya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gulyapulya"/>
    <language>en</language>
    <item>
      <title>2022 wrapped: open-source</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Sat, 10 Dec 2022 07:38:33 +0000</pubDate>
      <link>https://dev.to/gulyapulya/2022-wrapped-open-source-2g3a</link>
      <guid>https://dev.to/gulyapulya/2022-wrapped-open-source-2g3a</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone! 🙋🏻‍♀️
&lt;/h2&gt;

&lt;p&gt;Today, I wanted to quickly wrap-up my contributions for this year! I do not have Spotify, so this will be my version of "2022 wrapped". 😂&lt;/p&gt;

&lt;h2&gt;
  
  
  The beginning 🎬
&lt;/h2&gt;

&lt;p&gt;My open-source journey begun only this September, and honestly, I did not expect that I would get so excited about contributions by the end of this year and actually enjoy blogging every time (I am not a writer and never been anywhere close). So, it's pretty shocking to me, but if I knew that open-source is so interesting and welcoming, I'd have started much earlier. &lt;/p&gt;

&lt;h2&gt;
  
  
  My 2022 🎞
&lt;/h2&gt;

&lt;p&gt;Here are my quick statistics up to this day:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ho3Zzzws--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4duipdnna2y2s4a69xb4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ho3Zzzws--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4duipdnna2y2s4a69xb4.gif" alt="contribution statistics" width="864" height="864"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, going through &lt;a href="https://newsroom.spotify.com/2022-11-30/get-to-know-your-music-listening-personality-from-2022-wrapped/"&gt;this Spotify guide&lt;/a&gt; on their personalities approach, and comparing music to projects, I have figured that I am ✨the Nomad✨.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TvZXZPCy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/30ljwxrtigy1foiujil6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TvZXZPCy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/30ljwxrtigy1foiujil6.gif" alt="personality" width="864" height="864"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  This December ❄️
&lt;/h2&gt;

&lt;p&gt;I am very happy, as I did not only achieve what I was planning earlier in &lt;a href="https://dev.to/gulyapulya/december-is-finals-first-christmas-later-4iii"&gt;my first post this month&lt;/a&gt;, but also made one more contribution. &lt;/p&gt;

&lt;p&gt;So, this month, I created new pet animations for VS Code Pets extension, which helped one person to see his favourite animal, chicken, as part of the tool. It was very interesting issue, as we collaborated with &lt;a href="https://github.com/MhouneyLH"&gt;Lucas&lt;/a&gt; and although I have never met him, the process was very smooth and productive. Now, you can play with chicken while coding in VSCode. &lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tonybaloney/vscode-pets/pull/339#issuecomment-1343845408"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Comment for
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#339&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/tonybaloney"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--pfwZg98V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars.githubusercontent.com/u/1532417%3Fu%3D0e307dac8a59b74d85b2edc11c5a2c369df60388%26v%3D4" alt="tonybaloney avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/tonybaloney"&gt;tonybaloney&lt;/a&gt;
        &lt;/strong&gt; commented on &lt;a href="https://github.com/tonybaloney/vscode-pets/pull/339#issuecomment-1343845408"&gt;&lt;time&gt;Dec 09, 2022&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/1532417/206626447-f8b0d2ba-60ac-436d-874b-aca215e3e06e.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TCCnw2VJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://user-images.githubusercontent.com/1532417/206626447-f8b0d2ba-60ac-436d-874b-aca215e3e06e.gif" alt="screenshot 2022-12-09 at 15 42 53"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Love it!! 👍🏻&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tonybaloney/vscode-pets/pull/339#issuecomment-1343845408"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;We also decided to keep working together to create more chicken types. So, stay tuned for new black and brown red chickens.&lt;/p&gt;

&lt;p&gt;Apart from that, I worked on the &lt;a href="https://github.com/cuttle-cards/cuttle/issues/231"&gt;this UI issue&lt;/a&gt; as part of the &lt;a href="https://github.com/cuttle-cards/cuttle"&gt;Cuttle project&lt;/a&gt;, the pvp card game. I was not familiar with the project but managed to figure it out. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 😮‍💨
&lt;/h2&gt;

&lt;p&gt;I am very proud of myself, as this year, I have contributed to big companies' projects such as Intel and Pandas, had a variety of contributions ranging from code solutions to translations and even animations, connected with dozens of people all around the world and all due to open-source. 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QHem4Wz9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.gifer.com/embedded/download/PyO5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QHem4Wz9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.gifer.com/embedded/download/PyO5.gif" alt="christmas" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>productivity</category>
      <category>github</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to create pixel gif animations 🐔</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Thu, 08 Dec 2022 08:27:10 +0000</pubDate>
      <link>https://dev.to/gulyapulya/how-to-create-pixel-gif-animations-5518</link>
      <guid>https://dev.to/gulyapulya/how-to-create-pixel-gif-animations-5518</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone!
&lt;/h2&gt;

&lt;p&gt;Today, I wanted to share what I have learned working on the &lt;a href="https://github.com/tonybaloney/vscode-pets/issues/242" rel="noopener noreferrer"&gt;issue of creating a new pet animations&lt;/a&gt; for the VSCode extension &lt;a href="https://github.com/tonybaloney/vscode-pets" rel="noopener noreferrer"&gt;VS Code Pets&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Little backstory 🗃
&lt;/h2&gt;

&lt;p&gt;VS Code Pets is one of my favourite extensions which creates a little window next to the code editor where you can play with different pets while working on your projects. I browsed through the &lt;a href="https://github.com/tonybaloney/vscode-pets/issues" rel="noopener noreferrer"&gt;open issues&lt;/a&gt; inside the repo as I wanted to contribute to the tool and found one which touched me. One guy used the extension a lot but missed his favourite pet - chicken (he even had chicken toy on his GitHub profile photo and chicken emoji in the status message). So, I could not resist but help to add chicken as a new pet.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tonybaloney/vscode-pets/issues/242" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Adding a chicken as a new pet🐔
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#242&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/MhouneyLH" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F78447003%3Fv%3D4" alt="MhouneyLH avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/MhouneyLH" rel="noopener noreferrer"&gt;MhouneyLH&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/tonybaloney/vscode-pets/issues/242" rel="noopener noreferrer"&gt;&lt;time&gt;Oct 11, 2022&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;I am missing my favourite pet - the chicken, so I would like to add it.&lt;/p&gt;
&lt;p&gt;I think of like a grain-picking animation, after the chicken was spawned. In additition it should jump and then slowly flies down to the bottom again.
One problem I will have is to design the chicken in a pixel-art way. Is there anyone who could deal with this or should I just use the art of other people?&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tonybaloney/vscode-pets/issues/242" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Task 🎯
&lt;/h2&gt;

&lt;p&gt;He did not know how to create required animations and looked for help. He tried copying one from the internet but you cannot do that due to copyright. You either have to create gifs yourself or look for art with applicable permissions. &lt;/p&gt;

&lt;h2&gt;
  
  
  Skills 🪄
&lt;/h2&gt;

&lt;p&gt;To be honest, I had &lt;strong&gt;absolutely no experience&lt;/strong&gt; when I decided to work on that issue, so if I could do it, then you definitely can too! All of the software is free and accessible through basic internet browser, so all you need is your enthusiasm. &lt;/p&gt;

&lt;h2&gt;
  
  
  Process 🛠
&lt;/h2&gt;

&lt;p&gt;As I had no knowledge, my first obvious step was to go the modern library which is YouTube. I found this guy, &lt;a href="https://www.youtube.com/@saultoons/featured" rel="noopener noreferrer"&gt;@Saultoons&lt;/a&gt;, who had &lt;a href="https://www.youtube.com/watch?v=tFsETEP01k8&amp;amp;list=PLp99DFIAFv-xM8l6Uzmg83yvGRu6jMfid" rel="noopener noreferrer"&gt;the series of videos dedicated to basics of pixel animation art&lt;/a&gt;. I watched a few videos and got a general idea of where to start, how the frames work and what techniques can be used for different motions.&lt;/p&gt;

&lt;p&gt;Then I had to find a tool, where I am going to draw the animations. &lt;a href="https://www.aseprite.org" rel="noopener noreferrer"&gt;Aseprite&lt;/a&gt; which was featured in the video costed around $20, so I looked for free alternatives and found &lt;a href="https://www.pixilart.com/draw" rel="noopener noreferrer"&gt;Pixilart&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Pixilart had very intuitive interface and I could start drawing right away. I googled some pixel chicken pictures to use as a reference and started outlining my base frame. Once I got the basic design which I liked, I added colour and shades to the picture. &lt;/p&gt;

&lt;p&gt;This is what I got:&lt;br&gt;
&lt;a href="https://media2.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%2Fz8gqs1nqvqqepc33lnni.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fz8gqs1nqvqqepc33lnni.jpg" alt="pixel chicken picture" width="85" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Later, I had to figure out what motions I need to produce. As I was drawing a chicken, I came up with 5 states:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;idle / standing&lt;/li&gt;
&lt;li&gt;grain picking &lt;/li&gt;
&lt;li&gt;walking&lt;/li&gt;
&lt;li&gt;fast walking / flying &lt;/li&gt;
&lt;li&gt;with a ball (required by the project)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For all of them, I researched and observed the real chicken natural behaviour performing that motion to replicate it in the animation (which meant that I have watched dozens of chicken farm videos on YouTube lol). &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fun fact: chickens move their necks back and forth while walking. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I would break down the motion into multiple frames and try to measure what would be the best time for each of them. Sometimes, you need one part to be quicker than another or on the other hand, some motions are pretty constant. &lt;/p&gt;

&lt;h2&gt;
  
  
  Tips ✨
&lt;/h2&gt;

&lt;p&gt;Some of the things I learned the hard way, so I guess I will share them, so you do not have to repeat my mistakes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Always &lt;strong&gt;download your work&lt;/strong&gt; not only as gif but also &lt;strong&gt;as pixil&lt;/strong&gt;. Gif only holds the result and does not perfectly transform back into pixels. So, it will be hard to make changes. However, pixil holds all your project info and will import back perfectly. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you want to have a transparent background, you will need to color it in some unique to your drawing color that you did not use and go to another tool to make it transparent. You have to use this workaround as Pixilart will not export your gif properly even if it has a transparent background, somehow it will always be white. &lt;a href="https://onlinegiftools.com/create-transparent-gif" rel="noopener noreferrer"&gt;Onlinegiftools&lt;/a&gt; worked well for me. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Some additional work 🧹
&lt;/h2&gt;

&lt;p&gt;Because I was working for the existing project, they had their own requirements regarding the size. So, I had to change that as well. For resizing and cropping, I used &lt;a href="https://ezgif.com/resize/ezgif-2-a7c729d5b6.gif" rel="noopener noreferrer"&gt;ezgif.com&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final result 🌟
&lt;/h2&gt;

&lt;p&gt;So, at the end, I got &lt;a href="https://github.com/tonybaloney/vscode-pets/pull/338" rel="noopener noreferrer"&gt;my pull request&lt;/a&gt; merged and now, chicken can stand, pick grain from the ground, walk, run and hold the ball. 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fjiymd757ykwrph6x6hy7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjiymd757ykwrph6x6hy7.gif" alt="chicken pixel gif" width="85" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fz1b2pqk3ozx31sp8bixt.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fz1b2pqk3ozx31sp8bixt.gif" alt="chicken pixel gif" width="111" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fofuzggdcwmyv3q5ym412.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fofuzggdcwmyv3q5ym412.gif" alt="chicken pixel gif" width="95" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F6t52ps0nj16iidlhf1gh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F6t52ps0nj16iidlhf1gh.gif" alt="chicken pixel gif" width="85" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fy6wz1y3h7skkmvduxznz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fy6wz1y3h7skkmvduxznz.gif" alt="chicken pixel gif" width="85" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>webdev</category>
      <category>developer</category>
    </item>
    <item>
      <title>December is finals first, Christmas later</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Wed, 07 Dec 2022 09:06:59 +0000</pubDate>
      <link>https://dev.to/gulyapulya/december-is-finals-first-christmas-later-4iii</link>
      <guid>https://dev.to/gulyapulya/december-is-finals-first-christmas-later-4iii</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone!
&lt;/h2&gt;

&lt;p&gt;This post will be my personal goal setter for the upcoming weeks of my open-source contributions. &lt;/p&gt;

&lt;h2&gt;
  
  
  December ❄️
&lt;/h2&gt;

&lt;p&gt;This month will be my fourth month in the world of open-source... It might sound like not much, but when you break it down to all the constant work that I have been doing every week, I can totally say that I am proud. When I started in September, I could not imagine that I will love it the way I do now. &lt;/p&gt;

&lt;h2&gt;
  
  
  2023... not yet 😁
&lt;/h2&gt;

&lt;p&gt;Before the year ends, my plan is to complete a few more pull requests and if possible, challenge myself on new levels. &lt;/p&gt;

&lt;h2&gt;
  
  
  Idea 💡
&lt;/h2&gt;

&lt;p&gt;During &lt;a href="https://dev.to/gulyapulya/my-first-hacktoberfest-14l8"&gt;hacktoberfest month&lt;/a&gt;, I contributed to the &lt;a href="https://github.com/tonybaloney/vscode-pets" rel="noopener noreferrer"&gt;vscode-pets&lt;/a&gt; which was a VSCode extension with cute pets to play with while coding. I really liked the general idea, plus, the founder and maintainer of the project was always helpful and quick to respond. It was such a nice contributing experience that I  continued making contributions even after the fest was done.&lt;/p&gt;

&lt;p&gt;While working on some of the changes, I realized that I have never worked on the VSCode extension before although I am a fan who uses them regularly. So, I decided that it would be quite interesting to dig deeper into it and that in my next contributions I should definitely check out open-source extension repos. &lt;/p&gt;

&lt;h2&gt;
  
  
  Plan 📜
&lt;/h2&gt;

&lt;p&gt;So, I started looking for the projects and remembered that we have one internal repo in my college that focuses on creating a VSCode extension for all programming students. We brainstormed once of what it should do and came up with some interesting ideas such as cheer-up messages, college-wide or course-wide formatters, connection to internal SSO, etc. &lt;/p&gt;

&lt;p&gt;I checked out the issues inside the repo and found one I might work on, but was not sure if it would be a good fit for this contribution as it might take me more than a few weeks. &lt;/p&gt;

&lt;p&gt;Therefore, I started to look for an alternative and my first instinct was to go back to the good-old vscode-pets. I saw some issues connected to the creation of new pets and it looked very fun to do. I use this extension now, so having a pet that I know I've helped creating would be amazing.  I checked out the top issues connected to this topic and found &lt;a href="https://github.com/tonybaloney/vscode-pets/issues/242" rel="noopener noreferrer"&gt;this&lt;/a&gt;. the guy said that he missed his favourite animal - chicken, and that he would really want to see it in the extension... My heart melted and I was hooked right away. 🥺 I have no previous knowledge in animations, so it will be personally very challenging, but I really want to help, so at least I've got the spirit. &lt;/p&gt;

&lt;p&gt;Thus, the plan is to complete one of these features by the end of the coming weeks and enjoy the process. &lt;/p&gt;

&lt;p&gt;P.s: wish me luck, as I have big final projects for each of my classes due this week as well. 🥲&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>How to publish your project to npm?</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Sun, 27 Nov 2022 22:58:41 +0000</pubDate>
      <link>https://dev.to/gulyapulya/how-to-publish-your-github-project-to-npm-52kd</link>
      <guid>https://dev.to/gulyapulya/how-to-publish-your-github-project-to-npm-52kd</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone!
&lt;/h2&gt;

&lt;p&gt;Today, I created the first release for my &lt;a href="https://github.com/gulyapulya/SSGulnur"&gt;SSGulnur tool&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Releases 🚀
&lt;/h3&gt;

&lt;p&gt;As you are building your tool, it is alright to store it on the GitHub and apply it by cloning the repo, building and running it locally following the pre-requisites and instructions outlined in the README file. &lt;/p&gt;

&lt;p&gt;However, when it comes to the actual users, not everyone knows how to do it, so it is better to provide releases which are easy to understand, download and use.  &lt;/p&gt;

&lt;p&gt;For that, I am going to publish my project to the registry so that it can be installed by name. &lt;/p&gt;

&lt;h3&gt;
  
  
  npm 🗃
&lt;/h3&gt;

&lt;p&gt;As my project is using node.js, my obvious choice of release and package manager was &lt;a href="https://www.npmjs.com"&gt;npm&lt;/a&gt;.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 👩🏻‍🏫
&lt;/h3&gt;

&lt;p&gt;It does not require much to just publish a package. You can do it by only running the &lt;code&gt;npm publish&lt;/code&gt; command, however it will be missing some of the industry standard procedures. &lt;/p&gt;

&lt;p&gt;For example, it will not ensure that you are using &lt;a href="https://semver.org"&gt;Semantic versioning (Semver for short)&lt;/a&gt; or associate a git tag for each update. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you do not know what Semver is, I have a brief explanation at the end of the post.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Therefore, we will be using a tool called &lt;a href="https://github.com/sindresorhus/np"&gt;np&lt;/a&gt;, which will &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;run the tests (if there are any)&lt;/li&gt;
&lt;li&gt;update version in package.json according to Semver&lt;/li&gt;
&lt;li&gt;create a git tag according to Semver&lt;/li&gt;
&lt;li&gt;push the package to Github&lt;/li&gt;
&lt;li&gt;push the package to npm&lt;/li&gt;
&lt;li&gt;create release notes for every update&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;all in one command. &lt;/p&gt;

&lt;h3&gt;
  
  
  Steps 📜
&lt;/h3&gt;

&lt;p&gt;In order to use &lt;strong&gt;np&lt;/strong&gt; there are a few requirements (which you most probably have already met):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Project needs to be a Git repository: 

&lt;ul&gt;
&lt;li&gt;It needs to have a remote.&lt;/li&gt;
&lt;li&gt;You must have pushed to the remote at least once.&lt;/li&gt;
&lt;li&gt;You also need to make sure your working directory is clean.&lt;/li&gt;
&lt;li&gt;You &lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent"&gt;set up ssh authentication keys&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;You need to have an &lt;a href="https://www.npmjs.com/signup"&gt;npm account&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All you have to do is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to your projects folder and open a terminal.&lt;/li&gt;
&lt;li&gt;Login to your npm account using &lt;code&gt;npm login&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Install np globally &lt;code&gt;npm install --global np&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;np&lt;/code&gt; and follow the prompt&lt;/li&gt;
&lt;/ol&gt;

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

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

&lt;ol&gt;
&lt;li&gt;Optional: add script in package.json for releases using np.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"scripts": {
    ...
    "release": "np"
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tadaaa 🎉
&lt;/h3&gt;

&lt;p&gt;Now, you should have an npm package as well as associated tags and releases on GitHub. &lt;/p&gt;

&lt;p&gt;So, my tool can be installed by only using &lt;code&gt;npm i ssgulnur&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;My resulting npm package: &lt;br&gt;
&lt;a href="https://www.npmjs.com/package/ssgulnur"&gt;https://www.npmjs.com/package/ssgulnur&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub releases:&lt;br&gt;
&lt;a href="https://github.com/gulyapulya/SSGulnur/releases"&gt;https://github.com/gulyapulya/SSGulnur/releases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f83VIw8C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://1b-f.s3.eu-west-1.amazonaws.com/a/34219-55525652-03C7-4F99-9540-65418205EAFE-0-1520001959.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f83VIw8C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://1b-f.s3.eu-west-1.amazonaws.com/a/34219-55525652-03C7-4F99-9540-65418205EAFE-0-1520001959.gif" alt="TADA" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Semver 💡
&lt;/h3&gt;

&lt;p&gt;Now, lets talk a little bit about the versioning. &lt;a href="https://semver.org"&gt;Semver&lt;/a&gt; is a simple set of rules and requirements that dictate how version numbers are assigned and incremented. &lt;/p&gt;

&lt;p&gt;The ideas is that three numbers are used to explain the version and one of them gets incremented depending on how big the change has been.&lt;/p&gt;

&lt;p&gt;So the version is structured as MAJOR.MINOR.PATCH and you increase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MAJOR version when you make incompatible changes (some previous logic cannot be used anymore)&lt;/li&gt;
&lt;li&gt;MINOR version when you add functionality in a backwards compatible manner (new features that do not break the previous logic)&lt;/li&gt;
&lt;li&gt;PATCH version when you make backwards compatible bug fixes &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Contributions can lead to unexpected solutions</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Sat, 19 Nov 2022 09:56:56 +0000</pubDate>
      <link>https://dev.to/gulyapulya/contributions-can-lead-to-unexpected-solutions-25ja</link>
      <guid>https://dev.to/gulyapulya/contributions-can-lead-to-unexpected-solutions-25ja</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone! 🙋🏻‍♀️
&lt;/h2&gt;

&lt;p&gt;Today, my contribution to one of the external projects was successfully merged after a few days of review. 🎉&lt;/p&gt;

&lt;h3&gt;
  
  
  Project 👩🏻‍🏫
&lt;/h3&gt;

&lt;p&gt;I really loved working on different open source repositories during the month of Hacktoberfest and I decided to continue making contributions. &lt;/p&gt;

&lt;p&gt;One my Hacktoberfest contributions was made to the cool VSCode extension project called &lt;a href="https://github.com/tonybaloney/vscode-pets"&gt;VS Code Pets&lt;/a&gt;. It allows you to add and play with different cute pets in your VS Code window to boost productivity and help you stay focused. &lt;/p&gt;

&lt;p&gt;I personally started using it after I made my first contribution to it and it always brings me joy to see these little pets whenever I start coding.  &lt;/p&gt;

&lt;p&gt;Additionally, they made a new release where they included all changes including my first contribution and it was so nice to see my name documented as part of it. They keep track of releases in &lt;a href="https://github.com/tonybaloney/vscode-pets/blob/master/CHANGELOG.md"&gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;

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

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

&lt;p&gt;As for the internal project, I worked on the no-code translation issue, here, I wanted to try something more related to my field. &lt;/p&gt;

&lt;p&gt;I picked &lt;a href="https://github.com/tonybaloney/vscode-pets/issues/304"&gt;an issue&lt;/a&gt; which had very little description, but I have figured it out. It mentioned that whenever a cat receives a ball, its image gets significantly larger, which is not a supposed behaviour.&lt;/p&gt;

&lt;h3&gt;
  
  
  Solution ✨
&lt;/h3&gt;

&lt;p&gt;First of all, in order to better understand an issue, I has to try to recreate the situation myself. I opened up the VSCode Pets extension and tried throwing a ball at different cats. There are three options: brown, white and black. All of them got larger indeed when a ball was caught. I checked other pets as well to make sure it is solely related to the cats.&lt;/p&gt;

&lt;p&gt;Once I confirmed the cases, I started going through the code to understand how it is structured. I was thinking that the issue might be related to how the images get transformed from the running state to the ball caught. However, after spending some time, I figured out that mostly the way the states are managed is applied generally and not only to the cats. So, something else should cause it. &lt;/p&gt;

&lt;p&gt;I went back to the issue and saw someone else comment a table of different gif dimensions and ratios. The gifs displayed cat movements in different states. After comparing the gif images, I realized that only the ones with the ball had much smaller dimensions. So, this might have been causing the issue.&lt;/p&gt;

&lt;p&gt;However, I never worked with gifs before, so I was not sure how to proceed. I researched myself and found some tools for resizing gif images, but still did not know if it was the right way. So, I decided that it was better to ask the creator of the issue and the maintainer for some recommendations. Later, I was glad I did it as @tonybaloney (Github username) gave me great instructions on what to do. I was initially right and used the tool I found to resize the gifs. &lt;/p&gt;

&lt;p&gt;After I was satisfied with the images, I had to test my work to make sure that now the sizes get displayed correctly. I was told to run the extension in development mode, but as I have never developed a VSCode extension before, I did not know how to do it. I found &lt;a href="https://code.visualstudio.com/api/get-started/your-first-extension"&gt;the official documentation&lt;/a&gt; with instructions, but the F5 option did not work for me. Luckily, I found &lt;a href="https://dev.to/symflower/getting-started-with-visual-studio-code-extension-development-56g2"&gt;another article&lt;/a&gt; which mentioned that I can use "Run &amp;amp; Debug" tab and that was how I did it. &lt;/p&gt;

&lt;h3&gt;
  
  
  Pull request 🔎
&lt;/h3&gt;

&lt;p&gt;Overall, I only had to wait for the reviewer to confirm my changes and approve &lt;a href="https://github.com/tonybaloney/vscode-pets/pull/313"&gt;the pull request&lt;/a&gt;. There were no major complications, as I have tested my work. &lt;/p&gt;

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

&lt;p&gt;Previously, I have never worked with the development of VSCode extensions or with gif images, so this was a very valuable experience for me. I expected the solution to be code related, however, the issue has its own idea on how it should be fixed, which was interesting to figure out. &lt;/p&gt;

&lt;p&gt;Also, the project did not have a CONTRIBUTING.md file which usually contains all instructions to get started with contributions. So, I had to explore most of the things myself. Therefore, I made another suggestion to the owner. &lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/tonybaloney/vscode-pets/issues/304#issuecomment-1319683961"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Comment for
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#304&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/gulyapulya"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--y-pqvlY2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars.githubusercontent.com/u/52351598%3Fu%3D8e75ce51fcbd6acefe8d0d0d4657a3aae2f425d4%26v%3D4" alt="gulyapulya avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/gulyapulya"&gt;gulyapulya&lt;/a&gt;
        &lt;/strong&gt; commented on &lt;a href="https://github.com/tonybaloney/vscode-pets/issues/304#issuecomment-1319683961"&gt;&lt;time&gt;Nov 18, 2022&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;@tonybaloney Also, as a suggestion, it might be great to create a CONTRIBUTING.md file with instructions for contributors who have little knowledge of VScode extension development and other areas to speed up their introduction to the project. :)&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tonybaloney/vscode-pets/issues/304#issuecomment-1319683961"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Overall, very happy with what I have achieved. ☺️&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
      <category>vscode</category>
      <category>gif</category>
    </item>
    <item>
      <title>New translation experience</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Sat, 19 Nov 2022 08:58:15 +0000</pubDate>
      <link>https://dev.to/gulyapulya/new-translation-experience-3gpk</link>
      <guid>https://dev.to/gulyapulya/new-translation-experience-3gpk</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone! 🙋🏻‍♀️
&lt;/h2&gt;

&lt;p&gt;Today, my contribution to one of the local projects in my open source class was successfully merged after a few days of review. 🎉&lt;/p&gt;

&lt;h3&gt;
  
  
  Project 👩🏻‍🏫
&lt;/h3&gt;

&lt;p&gt;The issue I was working on was part of the &lt;a href="https://github.com/Seneca-CDOT/telescope"&gt;Telescope project&lt;/a&gt;, which is a tool for tracking blogs in orbit around my college's open source involvement. Basically, it collects all latest blogs written by the faculty and students and displays them on a single page.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/Seneca-CDOT/telescope/issues/3705"&gt;This issue&lt;/a&gt; was initially created as part of the series during the previous month for Hacktoberfest. It related to the &lt;a href="https://github.com/Seneca-CDOT/telescope/issues/2962"&gt;bigger issue&lt;/a&gt; which allowed students to add different translations to Telescope's documentation. &lt;/p&gt;

&lt;p&gt;At first, I was not sure, but one of the reviewers mentioned that they can review Russian language and as I am trilingual, I decided on work on it. So, I requested the language and was assigned a corresponding issue. &lt;/p&gt;

&lt;p&gt;However, during Hacktoberfest, I made enough pull requests and did not have time for this specific issue as I was caught up with my other assignments. So, now, when I finally have a chance, I have decided to go back to it and finish the job, as I personally believe that it is bad to leave dedicated issues behind. &lt;/p&gt;

&lt;p&gt;I also checked out the other language translations which I can partially understand such as Ukrainian as a reference to my work. I noticed that some of the pages were different by language and realized that the produced Docusaurus translation page was a little outdated compared to the current overview page. So, I copied the newest version manually and translated it instead. &lt;/p&gt;

&lt;h3&gt;
  
  
  Translation 🪄
&lt;/h3&gt;

&lt;p&gt;The task was to translate &lt;a href="https://telescope.cdot.systems/docs/overview/"&gt;the overview page&lt;/a&gt; of the project's documentation. &lt;/p&gt;

&lt;p&gt;This translation was more complicated than the previous ones but also more interesting. It required me to deliberately think and research some translation options, as the text contained lots of technical terms, formal wording and literary components. It was especially hard sometimes to choose the right wording, as Russian is a very rich but differently built language, and some of the words either do not have a perfect translation or have too many possible versions which are not exactly same.  Also, some of the technical computer science terms either cannot be translated, as they did not exist in the language before, or have ridiculous new translation which no one uses and I did not even know about before doing some research. Additionally, all of my previous translations were smaller in size compared to this one. &lt;/p&gt;

&lt;h3&gt;
  
  
  Pull request review 🔎
&lt;/h3&gt;

&lt;p&gt;After I was sutisfied my translation, I submitted a pull request. I messaged the reviewer in the pull request through comments, but did not get a reply for a day, so I decided to leave a kind message through the Slack channel with a request to check out the changes whenever possible. I made sure to thank the reviewer afterwards, as the translations are tricky sometimes, especially with Russian, so the suggestions are very valuable.  &lt;/p&gt;

&lt;p&gt;I received two reviews and multiple suggestions around different possible wordings. I implemented the changes and waited for them to be approved. Later, I saw my pull request being merged. &lt;/p&gt;

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

&lt;p&gt;Now, I know how to translate different technical IT terms into one of the languages I know and how to work with internalization in Docusaurus documentation. Valuable and interesting experience overall.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>node</category>
    </item>
    <item>
      <title>Reviewing PRs</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Fri, 18 Nov 2022 23:27:59 +0000</pubDate>
      <link>https://dev.to/gulyapulya/reviewing-prs-14jc</link>
      <guid>https://dev.to/gulyapulya/reviewing-prs-14jc</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone! 🙋🏻‍♀️
&lt;/h2&gt;

&lt;p&gt;Today, I reviewed multiple Pull Requests that were made to our internal class projects. I wanted to contribute to one of the newer ones, so I decided to start with Seneca's VSCode extension. Plus, I really liked the idea of what it can become.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣ First pull request
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://github.com/Seneca-CDOT/vscode-seneca-college/pull/13"&gt;https://github.com/Seneca-CDOT/vscode-seneca-college/pull/13&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first pull request that I found was made by &lt;a href="https://github.com/IvaniGabrovsky"&gt;@IvaniGabrovsky&lt;/a&gt; and it included changes related to the creation of the CONTRIBUTING.md and README.md files. &lt;/p&gt;

&lt;p&gt;CONTRIBUTING.md's purpose is to have instructions for the contributors and an overview of the project to help them get started with the changes. Meanwhile, README.md's primary audience are the users and it should tell what the tool is, how to use it and any additional helpful info. It also serves as the first stop point when learning about the project.&lt;/p&gt;

&lt;p&gt;Ivan made a great job, however there were many places for improvement, some of which were already outlined by the professor, &lt;a href="https://github.com/humphd"&gt;@humphd&lt;/a&gt;, and another student, &lt;a href="https://github.com/SerpentBytes"&gt;@SerpentBytes&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I decided to still take a look. I started a review after giving my first comment and ended it with the request for changes. &lt;/p&gt;

&lt;p&gt;I focused on multiple areas such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;grammar, as these files represent the project and cannot have big grammar mistakes (influences reputation);&lt;/li&gt;
&lt;li&gt;wording and content, as I have read through many similar files for other projects, I can tell what are some important steps and can give suggestions;&lt;/li&gt;
&lt;li&gt;guide for other comments, as Ivan sometimes asked for help through personal messages, I wanted to guide him where I can and give some recommendations for previously mentioned issues. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ivan responded to every suggestion very quickly and made all corresponding changes. &lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Second pull request
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://github.com/Seneca-CDOT/vscode-seneca-college/pull/12"&gt;https://github.com/Seneca-CDOT/vscode-seneca-college/pull/12&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I continued to review pull requests in the same project and found this one, which was made by &lt;a href="https://github.com/P-DR0ZD"&gt;@P-DR0ZD&lt;/a&gt; and focused on setting up Gitpod for the project. It created main Gitpod files and added information about Gitpod setup to the README.md. &lt;/p&gt;

&lt;p&gt;First, I had to research about &lt;a href="https://www.gitpod.io"&gt;Gitpod&lt;/a&gt;, as I do not have much experience about it and in order to test it I need to figure out what is expected. After some googling and looking through &lt;a href="https://www.gitpod.io/docs/introduction/getting-started"&gt;its documentation&lt;/a&gt;, I figured out that it allows to setup development environments to work on the projects online which is very helpful to get contribution going. &lt;/p&gt;

&lt;p&gt;First, I check &lt;a href="https://gitpod.io/#https://github.com/Seneca-CDOT/vscode-seneca-college"&gt;the link&lt;/a&gt; provided in the new README.md file and it worked perfectly. I could open VSCode through Gitpod and the project would be automatically prepared for me. &lt;/p&gt;

&lt;p&gt;I also checked out new &lt;a href="https://github.com/Seneca-CDOT/vscode-seneca-college/pull/12/files#diff-370a022e48cb18faf98122794ffc5ce775b2606b09a9d1f80b71333425ec078e"&gt;Gitpod yaml configuration file&lt;/a&gt; which looked good to me. I think it was prebuilt by Gitpod, so no possible syntax mistakes. &lt;/p&gt;

&lt;p&gt;However, I had one suggestion. I looked through &lt;a href="https://www.gitpod.io/docs/references/gitpod-yml"&gt;the documentation for .gitpod.yml&lt;/a&gt; and noticed that they have &lt;a href="https://www.gitpod.io/docs/references/gitpod-yml#vscodeextensions"&gt;support for VSCode extension recommendations&lt;/a&gt;. I also went to &lt;code&gt;.vscode/extensions.json&lt;/code&gt; in our project, as it is where recommended extensions would usually be specified, and found one - "amodio.tsl-problem-matcher". So, I suggested to include it for Gitpod as well. &lt;/p&gt;

&lt;h3&gt;
  
  
  Overall experience 🙌
&lt;/h3&gt;

&lt;p&gt;Overall, it was very helpful experience to get on the other side of pull requests. I learned about new tools and used my existing knowledge from my previous experiences to help make more qualitative changes. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>opensource</category>
      <category>programming</category>
      <category>github</category>
    </item>
    <item>
      <title>Continuous Integration for Node.js project</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Fri, 18 Nov 2022 21:38:11 +0000</pubDate>
      <link>https://dev.to/gulyapulya/continuous-integration-for-nodejs-project-269a</link>
      <guid>https://dev.to/gulyapulya/continuous-integration-for-nodejs-project-269a</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone! 🙋🏻‍♀️
&lt;/h2&gt;

&lt;p&gt;Today, I wanted to share how to implement continuous integration in a few easy steps using &lt;a href="https://github.com/features/actions" rel="noopener noreferrer"&gt;Github Actions&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In the previous post, I was telling how I added the tests using Jest framework to my SSGulnur tool. This will be a continuation, as we will use these tests as a step in Github Actions workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps 🙌
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Basically, I followed this &lt;a href="https://docs.github.com/en/actions/using-workflows/using-starter-workflows" rel="noopener noreferrer"&gt;little step-by-step guide&lt;/a&gt; by Github and made a few configurations to match my workflows needs. Below, I will explain it in more detail.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I navigated to my GitHub repository, clicked "Actions" tab and chose to create a new workflow, where I was presented with different kinds of starter workflows. I chose &lt;a href="https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs#running-on-a-different-operating-system" rel="noopener noreferrer"&gt;the one for Node.js&lt;/a&gt;, as it is what my tool is using. &lt;/p&gt;

&lt;p&gt;This will create a configuration &lt;a href="https://github.com/gulyapulya/SSGulnur/commit/0972d7b2a47f42d7c2a258cd54e90dc5b0766c85" rel="noopener noreferrer"&gt;yaml file&lt;/a&gt; in your &lt;code&gt;.github/workflows&lt;/code&gt; folder which will explain Github what and when to do to your repo changes. &lt;/p&gt;

&lt;p&gt;I changed a few lines to match my scripts for linter and tests and this is what I ended up with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node&lt;/span&gt;
&lt;span class="c1"&gt;# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs&lt;/span&gt;

&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Node.js CI&lt;/span&gt;

&lt;span class="c1"&gt;#will work on every push and pull request to the main branch&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;main"&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;main"&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;

    &lt;span class="na"&gt;strategy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;matrix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;node-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;14.x&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;16.x&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;18.x&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
        &lt;span class="c1"&gt;# See supported Node.js release schedule at https://nodejs.org/en/about/releases/&lt;/span&gt;

    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v3&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Use Node.js ${{ matrix.node-version }}&lt;/span&gt;
      &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-node@v3&lt;/span&gt;
      &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;node-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ matrix.node-version }}&lt;/span&gt;
        &lt;span class="na"&gt;cache&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;npm'&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm ci&lt;/span&gt; &lt;span class="c1"&gt;#runs clean installation&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm run lint&lt;/span&gt; &lt;span class="c1"&gt;#linter  &lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm test&lt;/span&gt; &lt;span class="c1"&gt;#run tests&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I then committed this to my repo and checked the "Actions" tab for the successful run. I also made an intentional mistake to double check that my workflow will fail if something is wrong, and changed it back. &lt;/p&gt;

&lt;h3&gt;
  
  
  Unrelated but also experience 😁
&lt;/h3&gt;

&lt;p&gt;Today, I also &lt;a href="https://github.com/mnosov622/simple-ssg1/pull/10" rel="noopener noreferrer"&gt;reviewed and added a few tests to another project&lt;/a&gt;, which was a similar tool of my friend. I was a little happy when I realized that I have structured my work in an easy way for testing such as I have lots of isolated small functions. Meanwhile, my friend had to copy his main function and rewrite it to be able to test its logic. It was a little confusing at first to figure out how everything works and to find something testable, but because he was also using Node.js and Jest, it was manageable. &lt;/p&gt;

&lt;p&gt;Also, while reviewing each other's pull requests, we learned a valuable lesson on how to make reviews and request changes, which was a very fun experience. &lt;/p&gt;

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

&lt;p&gt;Apparently, CIs can be very easy if you already have your scripts set up and can use one of the starter workflows. &lt;/p&gt;

</description>
      <category>gratitude</category>
    </item>
    <item>
      <title>JavaScript testing with Jest</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Sun, 13 Nov 2022 09:42:54 +0000</pubDate>
      <link>https://dev.to/gulyapulya/javascript-testing-with-jest-5cke</link>
      <guid>https://dev.to/gulyapulya/javascript-testing-with-jest-5cke</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone!
&lt;/h2&gt;

&lt;p&gt;Today, I added testing to my SSGulnur project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Jest 🃏
&lt;/h3&gt;

&lt;p&gt;I chose &lt;a href="https://jestjs.io"&gt;Jest&lt;/a&gt;, as it is one of &lt;a href="https://developer.okta.com/blog/2020/01/27/best-nodejs-testing-tools"&gt;the most used testing frameworks&lt;/a&gt; for JavaScript and most of my tool's logic is written in JS. It was developed by Facebook and is &lt;a href="https://github.com/facebook/jest"&gt;open-source&lt;/a&gt;. Jest also has CLI option for checking coverage which is very great, it shows which lines of code have been tested and not and prints a beautiful report. &lt;/p&gt;

&lt;h3&gt;
  
  
  Set-up 🙌
&lt;/h3&gt;

&lt;p&gt;Working with Jest is quite easy even for beginners (thanks to their well-written &lt;a href="https://jestjs.io/docs/getting-started"&gt;documentation&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;First, I had to install it in my project. Can be done by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev jest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, I added the following scripts to my &lt;a href="https://github.com/gulyapulya/SSGulnur/blob/main/package.json#L9-L12"&gt;package.json&lt;/a&gt; to be able to run then through npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; "scripts": {
    "test": "jest --",
    "test:watch": "jest --watch --",
    "coverage": "jest --collect-coverage --",
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also updated my &lt;a href="https://github.com/gulyapulya/SSGulnur/blob/main/CONTRIBUTING.md"&gt;CONTRIBUTING.md&lt;/a&gt;, so the future contributors find instructions for testing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The Jest Framework is used for testing in this project.

You can use the following commands:

'npm test' for running test
'npm test example-test' for running only the tests that were specified with a pattern or filename (e.g. npm test createHTML)
'npm run test:watch' for running tests related to changed files based on git (uncommitted files)
'npm run coverage' for checking the coverage of the tests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  First unit tests 🥇
&lt;/h3&gt;

&lt;p&gt;Unit tests allow to check a small pieces of logic independently. I had to restructure my code by breaking it into even smaller pieces so that I can work with more focused functions. &lt;/p&gt;

&lt;p&gt;I added &lt;a href="https://github.com/gulyapulya/SSGulnur/tree/main/test"&gt;test&lt;/a&gt; folder to hold all my sample test files and tests. I used the snapshots to check if the output of the functions is as expected, because I work with big HTML files which would be hard to program manually.&lt;/p&gt;

&lt;p&gt;Here is my &lt;a href="https://github.com/gulyapulya/SSGulnur/blob/main/test/unit/createHTML.test.js"&gt;test file&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { createHTML } = require('../../src/helper');

describe('createHTML', () =&amp;gt; {
  test('.md files have to properly transform into HTML', () =&amp;gt; {
    expect(createHTML('test/sample.md')).toMatchSnapshot();
  });

  test('.txt files have to properly transform into HTML', () =&amp;gt; {
    expect(createHTML('test/sample.txt')).toMatchSnapshot();
  });

  test('Style should change if given with .md file', () =&amp;gt; {
    expect(
      createHTML('test/sample.txt', 'https://cdn.jsdelivr.net/npm/water.css@2/out/water.css')
    ).toMatchSnapshot();
  });

  test('Style should change if given with .txt file', () =&amp;gt; {
    expect(
      createHTML('test/sample.txt', 'https://cdn.jsdelivr.net/npm/water.css@2/out/water.css')
    ).toMatchSnapshot();
  });
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;I am a newbie in testing and before it would get me very frustrated, as I used to think that it was a lot of unrewarding manual work. However, now, I understand its importance and learn about it more and more. Apparently, it is also not that hard to start. 😊&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
      <category>testing</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to beautify your code and make contributions easy?</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Tue, 08 Nov 2022 23:53:28 +0000</pubDate>
      <link>https://dev.to/gulyapulya/how-to-beautify-your-code-and-make-contributions-easy-35g9</link>
      <guid>https://dev.to/gulyapulya/how-to-beautify-your-code-and-make-contributions-easy-35g9</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone! 🙋🏻‍♀️
&lt;/h2&gt;

&lt;p&gt;Today, I learned about Static Analysis tools which work on increasing the quality of your source code from the formatting and styling perspectives and by identifying bad coding practices. &lt;/p&gt;

&lt;p&gt;I added multiple tools to my SSGulnur project and below I will explain why they you probably need them too. &lt;/p&gt;

&lt;h3&gt;
  
  
  Code formatters 💄
&lt;/h3&gt;

&lt;p&gt;In open source, most of the projects use automatic source code formatters, beautifiers or "pretty printers". They make contributing easier, as they keep the source code in a consistent format. &lt;/p&gt;

&lt;p&gt;I am using mostly JavaScript, so my obvious choice was Prettier. For most of the formatters, the steps are similar such as you would have to: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;read through the &lt;a href="https://prettier.io/docs/en/index.html"&gt;documentation&lt;/a&gt; to install and setup the tool,&lt;/li&gt;
&lt;li&gt;configure the rules and options to customize the look, e.g., &lt;a href="https://github.com/gulyapulya/SSGulnur/blob/main/.prettierrc"&gt;.prettierrc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;create an ignore file to exclude files from formatting, e.g., &lt;a href="https://github.com/gulyapulya/SSGulnur/blob/main/.prettierignore"&gt;.prettierignore&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;(optional but great to do) create a script to run the formatter in one command, e.g., &lt;code&gt;npm run prettier&lt;/code&gt; defined as a script in &lt;a href="https://github.com/gulyapulya/SSGulnur/blob/main/package.json"&gt;package.json&lt;/a&gt; .&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Linters 🕵️‍♂️
&lt;/h3&gt;

&lt;p&gt;While contributing to a project, the least a develop wants to do is add code full of little bugs and bad practices. Linters help with that problem by scanning the sources code and identifying syntax errors, adherence to coding standards, security bugs and other potential errors. &lt;/p&gt;

&lt;p&gt;For my project, the best choice is ESLint as it is widely used. The steps are very similar to adding a beautifier. &lt;/p&gt;

&lt;h3&gt;
  
  
  Editor 📠
&lt;/h3&gt;

&lt;p&gt;The same way we configure our local editors, we can also pre-set the IDE settings for everyone who downloads the project. In VSCode, you can configure &lt;a href="https://code.visualstudio.com/docs/getstarted/settings#_workspace-settings"&gt;workspace setting&lt;/a&gt; which override the user's settings. Also, VSCode has lots of extensions and the ones for Prettier and ESLint which make the development much easier. There is a way to &lt;a href="https://code.visualstudio.com/docs/editor/extension-marketplace#_workspace-recommended-extensions"&gt;set extension recommendations&lt;/a&gt; for a workspace. &lt;/p&gt;

&lt;h3&gt;
  
  
  Pre-commit hook 🛃
&lt;/h3&gt;

&lt;p&gt;Additionally, there are pre-commit hooks which can be setup to seamlessly validate and modify the source code before every commit. I followed &lt;a href="https://prettier.io/docs/en/precommit.html"&gt;Prettier documentation&lt;/a&gt; to create one. I ran &lt;code&gt;npx mrm@2 lint-staged&lt;/code&gt; which installed &lt;a href="https://github.com/typicode/husky"&gt;husky&lt;/a&gt; and &lt;a href="https://github.com/okonet/lint-staged"&gt;lint-staged&lt;/a&gt;and added a configuration to the project’s package.json. Then, I modified the commands a little and that's it. &lt;/p&gt;

&lt;h3&gt;
  
  
  CONTRIBUTING.md 📜
&lt;/h3&gt;

&lt;p&gt;Creating a CONTRIBUTING.md file is very important if you want other people to contribute to your project as it will be the first stop guide which should explain how to choose issues, set-up a tool, test it, any conventions and other development instructions. &lt;/p&gt;

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

&lt;p&gt;Let the tools do the work for you!&lt;/p&gt;

&lt;p&gt;Ps:&lt;/p&gt;

&lt;p&gt;Yesterday, one of my classmates shared an interesting &lt;a href="https://simonwillison.net/2022/Nov/6/what-to-blog-about/"&gt;article&lt;/a&gt; which encourages people to blog and brings up a few blogging ideas. The author, Simon Willison, believes that one of the best topics to chose is TIL which means "Today I Learned". It reminded me so much of all these posts which I used to start with "Today, I explored/tried/coded/learned/etc.". However, before my article name convention was "My first " + topic name. Recently, I realized that what I write is much more meaningful than "just my first experience", so I should not limit the name. From now on, my blogs will most probably start with "How " + my actions. They will not be fully detailed documentations but should describe the main ideas around the topic and steps. &lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Docusaurus first impression and stealing like an open sourcer</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Mon, 31 Oct 2022 21:36:48 +0000</pubDate>
      <link>https://dev.to/gulyapulya/docusaurus-first-impression-and-stealing-like-an-open-sourcer-5e8c</link>
      <guid>https://dev.to/gulyapulya/docusaurus-first-impression-and-stealing-like-an-open-sourcer-5e8c</guid>
      <description>&lt;h2&gt;
  
  
  Hello Everyone!
&lt;/h2&gt;

&lt;p&gt;Today, I am going to share a new cool tool I learned about from my professor as well as the new changes that I did to my SSGulnur command-line tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Docusaurus 🦖
&lt;/h3&gt;

&lt;p&gt;Today, I explored a new tool called &lt;a href="https://docusaurus.io"&gt;Docusaurus&lt;/a&gt;. It was created by Facebook and is now part of the &lt;a href="https://opensource.fb.com"&gt;Meta Open Source&lt;/a&gt;. Docusaurus helps to create beautiful documentation websites for open source projects with no need of web knowledge, so that the users can focus on the content instead of implementation. It is full of additional features, very easy to use and therefore is very popular and widely used. One of the open source tools you are using has definitely built its documentation with Docusaurus. For example, &lt;a href="https://reactnative.dev"&gt;React Native&lt;/a&gt;, &lt;a href="https://jestjs.io"&gt;Jest&lt;/a&gt;, &lt;a href="https://developers.home-assistant.io"&gt;Home Assistant&lt;/a&gt; are all using it. &lt;/p&gt;

&lt;h3&gt;
  
  
  Experience ✨
&lt;/h3&gt;

&lt;p&gt;I decided to check out Docusaurus myself and created a sample website. I followed the &lt;a href="https://docusaurus.io/docs"&gt;Docusaurus documentation&lt;/a&gt; and its &lt;a href="https://docusaurus.io/docs/installation"&gt;installation instructions&lt;/a&gt;. I did a mini &lt;a href="https://tutorial.docusaurus.io"&gt;5-minute tutorial&lt;/a&gt; and decided to deploy my website. At first, it was hard as I tried to do it all manually myself, but then I found &lt;a href="https://docusaurus.io/docs/deployment"&gt;these amazing deployment docs&lt;/a&gt; (which always existed, but I am a lazy developer who's hands type code before checking the docs 🚩). Apparently, it only required one command lol.&lt;/p&gt;

&lt;p&gt;So, I would confirm that this tool is so easy to start and use. &lt;/p&gt;

&lt;p&gt;You can see my &lt;a href="https://github.com/gulyapulya/docusaurus"&gt;sample repo&lt;/a&gt; and live GitHub Pages website at &lt;a href="https://gulyapulya.github.io/docusaurus/"&gt;https://gulyapulya.github.io/docusaurus/&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Stealing like an open sourcer 🥷🏻 he-he
&lt;/h3&gt;

&lt;p&gt;Docusaurus does something similar to my SSG tool which is converting different types of files to html static pages. However, it does it much better and is full of cool features which I am very tempted to duplicate.  &lt;/p&gt;

&lt;p&gt;I recently found out that in the open source world, you can copy from each other as long as the license lets you to. Docusaurus uses an &lt;a href="https://github.com/facebook/docusaurus/blob/main/LICENSE"&gt;MIT license&lt;/a&gt; which allows you to "use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software," as long as you continue the license. &lt;/p&gt;

&lt;h3&gt;
  
  
  SSGulnur's new feature 👀
&lt;/h3&gt;

&lt;p&gt;Previously, I was required to implement the markdown support manually which meant that the use of public libraries was prohibited. My tool could only support limited styling elements such as header1, header2, links, bold and italics, but now I can finally let my tool have a full markdown support by using &lt;a href="https://github.com/showdownjs/showdown"&gt;Showdown&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I chose this feature as it seems foundational to me. Other features such as different themes, improved accessibility and configurable sidebar are nice to have but less important than the markdown support. &lt;/p&gt;

&lt;p&gt;I filed a new &lt;a href="https://github.com/gulyapulya/SSGulnur/issues/12"&gt;issue&lt;/a&gt; and started working on it on the new branch. I saved every step as commits which I squashed into one later. Everything went as planned and the implementation took me about what I expected, as I was not creating anything new myself and was only working on integrating an existing tool into my project.&lt;/p&gt;

&lt;h3&gt;
  
  
  New feature always means new issues 🤡
&lt;/h3&gt;

&lt;p&gt;However, when I started testing, I realized the tool works but there were still many places for improvement. For example, there is a &lt;a href="https://github.com/gulyapulya/SSGulnur/issues/13"&gt;bug&lt;/a&gt;, which probably existed before but I never noticed, that the last paragraph would not get converted and pasted into resulting page. Additionally, I filed an &lt;a href="https://github.com/gulyapulya/SSGulnur/issues/15"&gt;issue&lt;/a&gt; for documentation improvement as I did not update it to reflect the full markdown support.&lt;/p&gt;

&lt;p&gt;As I am a lover of Agile, I try to embrace progress over perfectionism. So, I filed those improvements as issues to work on later. The most important to me was that the tool worked and general purpose was achieved. &lt;/p&gt;

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

&lt;p&gt;In open source, we aspire to inspire! &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Hacktoberfest Experience Wrap-up and Tips!</title>
      <dc:creator>Gulnur Baimukhambetova</dc:creator>
      <pubDate>Wed, 19 Oct 2022 22:14:11 +0000</pubDate>
      <link>https://dev.to/gulyapulya/hacktoberfest-experience-wrap-up-and-tips-1pm5</link>
      <guid>https://dev.to/gulyapulya/hacktoberfest-experience-wrap-up-and-tips-1pm5</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone!
&lt;/h2&gt;

&lt;p&gt;Today, I got my fourth pull request accepted as part of the Hacktoberfest and I wanted to share a few details about my experience and give some advice to anyone who is still participating. &lt;/p&gt;

&lt;h3&gt;
  
  
  Experience
&lt;/h3&gt;

&lt;p&gt;This was my first time ever Hacktoberfest and I learned about it from my open-source course &lt;a href="https://github.com/humphd"&gt;professor, David&lt;/a&gt;. At first, I was a little scared and worried as I was also a newbie in open-source. I was not sure if I could complete four contributions to other companies' or people's projects in such a limited time. However, I used that anxiety in my own good and started my research early. A few days before October even started, I started looking for the issues to work on or projects that I might get interested in. I wanted to start from something small and progress slowly to give myself time to get confident. Overall, everything turned out even better than I expected and now I have already done the required amount of PRs accepted although it is still the middle of the month. &lt;/p&gt;

&lt;p&gt;By the way, you can find more details about my contributions during this month in the previous posts. &lt;/p&gt;

&lt;h3&gt;
  
  
  Learning outcomes and tips
&lt;/h3&gt;

&lt;p&gt;I learned a lot during these a few weeks and I wanted to share some of my important conclusions: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;First and foremost, open-source community is very welcoming!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, never be scared to start or ask questions. No one is going to laugh at you or punish for asking for clarifications. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Everyone can and should contribute to the open-source and every contribution is important!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even if you are not a technical person or do not have much of coding experience, there are a lot of issues that only require writing skills such as working on documentation or translations. &lt;/p&gt;

&lt;p&gt;If you are not sure if the issue is too hard for you, you can ask the maintainer for more details or even their opinion. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Communication is key! Always stay polite, concise and kind.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you found an issue that is of interest to you and it looks taken but here have been no updates for a long period of time, you can always ask to double check if the person is still working on it. If not, you can comment to let others know that now you will be working on it. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Activity varies a lot, some projects or PRs are slow and some are faster, so it depends a lot on the project or change.&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So before picking an issue, analyze the repo and plan accordingly: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How fast people reply to issues questions or to the submitted PRs.&lt;/li&gt;
&lt;li&gt;How many ignored or forgotten PRs they have (if it goes back to 2015, this is a red flag)&lt;/li&gt;
&lt;li&gt;How many contributions or contributors they had &lt;/li&gt;
&lt;li&gt;Are there clear instructions or the contributions document (usually called CONTRIBUTING.md) &lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Networking helps or as my prof says leverage the community.&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Join different Slack or Discord channels. Some projects might have links to their channels where you can meet other contributors and ask for help. Hacktoberfest also has their &lt;a href="https://discord.com/invite/hacktoberfest"&gt;official Discord channel&lt;/a&gt; so you can join it to find repos to work on, community and support.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;As a first timer it is alright to be lost and scared, but do not worry, you will definitely figure it out.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some tips for my newbies would be to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start early.&lt;/strong&gt;
Research and start looking for issues early to give yourself enough time. You will thank yourself later for that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn Github advanced search.&lt;/strong&gt;
Here is a &lt;a href="https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests"&gt;Github doc on how to search for issues&lt;/a&gt;, but your main friends would be &lt;code&gt;is:issue&lt;/code&gt; and &lt;code&gt;is:open&lt;/code&gt; to look for open issues, &lt;code&gt;label:Hacktoberfest&lt;/code&gt; and &lt;code&gt;sort:comments-asc&lt;/code&gt; to view all Hacktoberfest issues with least comments, as well as &lt;code&gt;user:Microsoft&lt;/code&gt; if you want to filter a specific account or company. Here is a &lt;a href="https://github.com/issues?q=is%3Aissue+is%3Aopen+label%3AHacktoberfest+user%3AMicrosoft+sort%3Acomments-asc"&gt;sample Url&lt;/a&gt; that you can use. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search online for issues or repos.&lt;/strong&gt;
Sometimes you may find good issues or repos from owners' blogs. For example, &lt;a href="https://dev.to/cicirello/hacktoberfest-progress-update-translation-contributions-still-welcome-4aof"&gt;this post&lt;/a&gt; by &lt;a class="mentioned-user" href="https://dev.to/cicirello"&gt;@cicirello&lt;/a&gt;  mentioned that they are looking for translation contributions. You can also look for &lt;code&gt;#contributorswanted&lt;/code&gt; tag inside the blogs. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search online for tips on contributing.&lt;/strong&gt;
I once landed on &lt;a class="mentioned-user" href="https://dev.to/sylwiavargas"&gt;@sylwiavargas&lt;/a&gt; post about &lt;a href="https://dev.to/stackblitz/hacktoberfest-docs-updates-in-three-steps-17f"&gt;how to contribute to the projects' documentation&lt;/a&gt; and she made it so easy. There are so many tools and workarounds that you need but just do not know about yet. So, start looking!&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Discussion
&lt;/h3&gt;

&lt;p&gt;I wanted to ask if anyone has other useful tips that I did not cover. Let's share and help each other complete this Hacktoberfest successfully and prepare better for next one! &lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
