<?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: Corentin Girard</title>
    <description>The latest articles on DEV Community by Corentin Girard (@drarig29).</description>
    <link>https://dev.to/drarig29</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%2F362930%2F72ad0514-b513-4f02-9cb6-68a7fd0b0725.png</url>
      <title>DEV Community: Corentin Girard</title>
      <link>https://dev.to/drarig29</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/drarig29"/>
    <language>en</language>
    <item>
      <title>Programmatically output lyrics on a tee-shirt</title>
      <dc:creator>Corentin Girard</dc:creator>
      <pubDate>Sun, 30 May 2021 18:21:42 +0000</pubDate>
      <link>https://dev.to/drarig29/programmatically-output-lyrics-on-a-tee-shirt-1obd</link>
      <guid>https://dev.to/drarig29/programmatically-output-lyrics-on-a-tee-shirt-1obd</guid>
      <description>&lt;p&gt;Some years ago I re-wrote the lyrics of a song as a JS script. I ordered a tee-shirt with this "art" of mine (I actually find it quite beautiful 😅).&lt;/p&gt;

&lt;p&gt;But everytime someone looked at my tee-shirt, they would ask me if it really means or does something. I would answer "no, it doesn't work, it's just a representation".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FjDs9Qs5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5rl53jyb1bh2gagluard.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FjDs9Qs5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5rl53jyb1bh2gagluard.png" alt="My tee-shirt with source code art"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But now, I've implemented it!&lt;/p&gt;

&lt;p&gt;I chose C++ to be able to overload operators exactly as I wanted... My goal was to not change anything about this source code, which I designed without knowing I would implement it.&lt;/p&gt;

&lt;p&gt;So in the &lt;code&gt;main.cpp&lt;/code&gt; file, all I have is the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include "logic.cpp"
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cm"&gt;/**
     * Guess the song... 😌 😎
     */&lt;/span&gt;

    &lt;span class="n"&gt;imagine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;heaven&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"easy"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;below&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;hell&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;above&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sky&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;imagineAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"living for today"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;imagine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;countries&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s"&gt;"hard"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kill&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;die&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;reasons&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;religion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;imagineAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"living life in peace"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;chorus&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;//🎵🎶&lt;/span&gt;

    &lt;span class="n"&gt;imagine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;possessions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="s"&gt;"😀"&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"😥"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;need&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;greed&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;hunger&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;men&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;([]()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"brothers"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="n"&gt;imagineAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"sharing all the world"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;chorus&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;//🎵🎶&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All the logic is included in another file.&lt;/p&gt;

&lt;p&gt;As you can see, the only differences are the double quotes for the string literals and the syntax of the lambda expression. Apart from that, it's the exact same thing as my tee-shirt.&lt;/p&gt;

&lt;p&gt;Here's the output of the program, without any hardcoding:&lt;/p&gt;

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

&lt;p&gt;Here's the repo: &lt;a href="https://github.com/Drarig29/tee-shirt-song"&gt;https://github.com/Drarig29/tee-shirt-song&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, did you guess the song?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>javascript</category>
      <category>cpp</category>
    </item>
    <item>
      <title>Kounter, a simple PWA</title>
      <dc:creator>Corentin Girard</dc:creator>
      <pubDate>Tue, 02 Mar 2021 18:59:50 +0000</pubDate>
      <link>https://dev.to/drarig29/kounter-a-simple-pwa-4ob1</link>
      <guid>https://dev.to/drarig29/kounter-a-simple-pwa-4ob1</guid>
      <description>&lt;h2&gt;
  
  
  Request
&lt;/h2&gt;

&lt;p&gt;My mom is a teacher and wanted to have something easy where she can count up the participations of her students.&lt;/p&gt;

&lt;p&gt;She asked for a straightforward solution, preferably a mobile app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choice
&lt;/h2&gt;

&lt;p&gt;I already have a Play Store account so I said to myself: "What a good opportunity to learn React Native!"&lt;/p&gt;

&lt;p&gt;Before I got started, I verified if the whole process was fast enough... but I saw I had to re-install Android Studio and all the build tools needed for Android (see &lt;a href="https://reactnative.dev/docs/environment-setup"&gt;here&lt;/a&gt;) and everything about Gradle and APK signing (see &lt;a href="https://reactnative.dev/docs/signed-apk-android"&gt;here&lt;/a&gt;) brought me back bad memories...&lt;/p&gt;

&lt;p&gt;So instead I chose to make a progressive web app with &lt;a href="https://preactjs.com/"&gt;Preact&lt;/a&gt; (basically a lightweight React! 🚀).&lt;/p&gt;

&lt;p&gt;I do not consider myself as a beginner in React but it was definitely the first time I was going to use functional components. I wanted to try those hooks! 😁&lt;/p&gt;

&lt;p&gt;My other choices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I always use &lt;a href="https://pnpm.js.org/"&gt;pnpm&lt;/a&gt; currently, this is a faster npm&lt;/li&gt;
&lt;li&gt;I generated the PWA with &lt;a href="https://preactjs.com/cli"&gt;Preact CLI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;I wanted to try &lt;a href="https://primefaces.org/primereact/showcase/#/"&gt;PrimeReact&lt;/a&gt; components with Preact&lt;/li&gt;
&lt;li&gt;I wanted to automatically build and publish my PWA on GitHub Pages with a CI pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thinking
&lt;/h2&gt;

&lt;p&gt;My mom can easily export each of her student groups to separate CSV files.&lt;/p&gt;

&lt;p&gt;But because she wants to import data once, I figured out that having a single file with all the groups would be a good thing.&lt;/p&gt;

&lt;p&gt;So this will be the only annoying she has to do: export all the groups and combine them into a single CSV file with a simple format.&lt;/p&gt;

&lt;p&gt;She'll have to do this only once.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Example of CSV file (names generated &lt;a href="http://www.listofrandomnames.com/"&gt;here&lt;/a&gt;):&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Group name&lt;/th&gt;
&lt;th&gt;Students&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Group A&lt;/td&gt;
&lt;td&gt;Jalisa Daughtry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Tisa Metellus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Elba Kennison&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Johnna Goetzinger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Monet Caine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Group B&lt;/td&gt;
&lt;td&gt;Blair Gomes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Angeles Ratley&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Lamonica Miner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;Elton Standley&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All the data is persisted in &lt;code&gt;localStorage&lt;/code&gt; so nothing is on a server, and there is no problem with GPDR and students.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resolution
&lt;/h2&gt;

&lt;p&gt;You can see the code here: &lt;a href="https://github.com/Drarig29/kounter"&gt;https://github.com/Drarig29/kounter&lt;/a&gt;&lt;br&gt;
And a live demo here: &lt;a href="https://drarig29.github.io/kounter"&gt;https://drarig29.github.io/kounter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For beginners, I think this can be a good example for many things.&lt;/p&gt;

&lt;p&gt;However, I didn't split anything, this is a quickly-made solution. So most of the logic is in &lt;a href="https://github.com/Drarig29/kounter/blob/master/src/components/home/index.js"&gt;this file&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'm open to comments too! 😊&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>showdev</category>
      <category>react</category>
    </item>
    <item>
      <title>pnpm and package-lock.json</title>
      <dc:creator>Corentin Girard</dc:creator>
      <pubDate>Wed, 28 Oct 2020 22:40:45 +0000</pubDate>
      <link>https://dev.to/drarig29/pnpm-and-package-lock-json-2d05</link>
      <guid>https://dev.to/drarig29/pnpm-and-package-lock-json-2d05</guid>
      <description>&lt;p&gt;I just started to use pnpm as an alternative to npm and it's great!&lt;/p&gt;

&lt;p&gt;However, I quickly ran into a problem: pnpm creates a &lt;code&gt;pnpm-lock.yaml&lt;/code&gt; file and it doesn't update my old &lt;code&gt;package-lock.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So here is what I could do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get rid of my &lt;code&gt;package-lock.json&lt;/code&gt; (so that I don't need to keep it up to date anymore) and keep the &lt;code&gt;pnpm-lock.yaml&lt;/code&gt; but I "force" people to use pnpm&lt;/li&gt;
&lt;li&gt;Remove both lock files and pretend that "it's a library so it should always be up to date" (from a comment below &lt;a href="https://stackoverflow.com/questions/54970665/automatically-updating-package-lock-json"&gt;this question&lt;/a&gt; on StackOverflow)&lt;/li&gt;
&lt;li&gt;Keep both files but I need to manually update the &lt;code&gt;package-lock.json&lt;/code&gt; with npm because pnpm doesn't support it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For now, I disabled the creation of the pnpm lock file so that pnpm just acts for me as something which speeds up my installation process and I kept my &lt;code&gt;package-lock.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;I think this question is also applicable to someone who uses yarn, so I searched for it and found in &lt;a href="https://stackoverflow.com/a/44904494/3970387"&gt;this answer&lt;/a&gt; that there is a &lt;code&gt;yarn import&lt;/code&gt; command which creates a yarn lock file from a npm lock file. There is exactly the same command with pnpm (but it creates a pnpm lock file, obviously).&lt;/p&gt;

&lt;p&gt;The problem is that it would force me to use something that I don't want to use anymore (npm) to be able to please others.&lt;/p&gt;

&lt;p&gt;What do you think about that? Maybe you have another solution?&lt;/p&gt;

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

&lt;p&gt;Here's the answer of pnpm's creator:&lt;/p&gt;



&lt;blockquote class="twitter-tweet"&gt;
&lt;br&gt;
&lt;p&gt;You should always commit a lockfile. If you use &lt;a href="https://twitter.com/pnpmjs?ref_src=twsrc%5Etfw"&gt;@pnpmjs&lt;/a&gt;, you should commit pnpm-lock.yaml.&lt;br&gt;&lt;br&gt;You should not commit lockfiles of other package managers. So if you commit pnpm-lock.yaml, remote package-lock.json or yarn.lock.&lt;/p&gt;— Zoltan Kochan 🇺🇦🇭🇺 (@ZoltanKochan) &lt;a href="https://twitter.com/ZoltanKochan/status/1321761596050493440?ref_src=twsrc%5Etfw"&gt;October 29, 2020&lt;/a&gt;&lt;br&gt;
&lt;/blockquote&gt; 

</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
    <item>
      <title>A funny thing about npm</title>
      <dc:creator>Corentin Girard</dc:creator>
      <pubDate>Mon, 12 Oct 2020 19:49:58 +0000</pubDate>
      <link>https://dev.to/drarig29/a-funny-thing-about-npm-5e6c</link>
      <guid>https://dev.to/drarig29/a-funny-thing-about-npm-5e6c</guid>
      <description>&lt;p&gt;Every now and then, I need to make a search on npm website. As I often do, I decided to add a new query URL in my browser.&lt;/p&gt;

&lt;p&gt;So I searched for a random letter on npm website to see the pattern of the search query.&lt;/p&gt;

&lt;p&gt;But, to my surprise, it redirected me to an existing package with this only letter as a name. "LOL", I thought.&lt;/p&gt;

&lt;p&gt;Then I tried with "a" and it existed too! As a result, I eventually searched for all the alphabet and... all the alphabet exists! WOW. 😂&lt;/p&gt;

&lt;p&gt;As a proof, I made a quick script to gather all of them and their descriptions. You can find it here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Drarig29/npm-alphabet"&gt;https://github.com/Drarig29/npm-alphabet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the full list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/a"&gt;a&lt;/a&gt; : Mocking framework and test framework in compact when-style. With recursive test runner&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/b"&gt;b&lt;/a&gt; : Benchmarks for Node.js.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/c"&gt;c&lt;/a&gt; : Set and remove comments from files and directories, and view them from the command line.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/d"&gt;d&lt;/a&gt; : Property descriptor factory&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/e"&gt;e&lt;/a&gt; : A modern universal utility library.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/f"&gt;f&lt;/a&gt; : Functional Microservice Request Library&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/g"&gt;g&lt;/a&gt; : Globalize module functions&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/h"&gt;h&lt;/a&gt; : generate HTML from javascript array structures&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/i"&gt;i&lt;/a&gt; : custom inflections for nodejs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/j"&gt;j&lt;/a&gt; : CLI tool for working with spreadsheet files&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/k"&gt;k&lt;/a&gt; : new web framework&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/l"&gt;l&lt;/a&gt; : Mix Async/Sync code with Promises and Streams in a reusable unified line&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/m"&gt;m&lt;/a&gt; : mongodb version management&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/n"&gt;n&lt;/a&gt; : Interactively Manage All Your Node Versions&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/o"&gt;o&lt;/a&gt; : common object helper functions&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/p"&gt;p&lt;/a&gt; : pattern matching in javascript for asyncronous iteration&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/q"&gt;q&lt;/a&gt; : A library for promises (CommonJS/Promises/A,B,D)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/r"&gt;r&lt;/a&gt; : require relative to your root project&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/s"&gt;s&lt;/a&gt; : SheetJS Spreadsheet Helper Library&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/t"&gt;t&lt;/a&gt; : tree traversal and manipulation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/u"&gt;u&lt;/a&gt; : A minimalist, functional utility library designed for embedding into another small program.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/v"&gt;v&lt;/a&gt; : Secure, Synchronized, Realtime, Cloud, Native JavaScript Variables &amp;amp; Events&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/w"&gt;w&lt;/a&gt; : WordBox cli to quickly spin up PHP dev environments.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/x"&gt;x&lt;/a&gt; : Apply HTML transformations using attributes&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/y"&gt;y&lt;/a&gt; : Simple object inspection tool&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/z"&gt;z&lt;/a&gt; : native pattern matching for javascript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading my first post! 😎&lt;/p&gt;

</description>
      <category>discovery</category>
      <category>npm</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
