<?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: Dean Tarisai</title>
    <description>The latest articles on DEV Community by Dean Tarisai (@deantarisai).</description>
    <link>https://dev.to/deantarisai</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%2F664217%2F8944d854-3e14-4339-acc7-561b6a52d824.jpeg</url>
      <title>DEV Community: Dean Tarisai</title>
      <link>https://dev.to/deantarisai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/deantarisai"/>
    <language>en</language>
    <item>
      <title>Starting afresh 🌱: Getting to know the community.</title>
      <dc:creator>Dean Tarisai</dc:creator>
      <pubDate>Thu, 08 Feb 2024 09:49:00 +0000</pubDate>
      <link>https://dev.to/deantarisai/starting-afresh-getting-to-know-the-community-5ech</link>
      <guid>https://dev.to/deantarisai/starting-afresh-getting-to-know-the-community-5ech</guid>
      <description>&lt;h5&gt;
  
  
  Hey, devs 🚀
&lt;/h5&gt;

&lt;p&gt;I'm Dean Tarisai, a freelance software developer from Zimbabwe with an enthusiasm for open source software (because I believe the best things should remain free and accessible to everyone).&lt;/p&gt;

&lt;p&gt;I have a keen interest for color science, algorithmic art and the JavaScript ecosystem and would love to share my 2cents while learning from the community as well. &lt;/p&gt;

&lt;p&gt;My current open source project is a color manipulation library written in Typescript. &lt;/p&gt;

&lt;p&gt;I'm transitioning to backend development with PowerShell and Go as my dialects of choice. I have zero experience with backend development and would love to receive mentorship from the community🚀. I'm interested in getting involved with the robotics and IoT fields.&lt;/p&gt;

&lt;p&gt;Grateful to be a part of this family of driven technicians 💙&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fforem.dev%2Fremoteimages%2Fuploads%2Farticles%2Fd1ilv68zi088fpnpw4cb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fforem.dev%2Fremoteimages%2Fuploads%2Farticles%2Fd1ilv68zi088fpnpw4cb.jpg" alt="Image of Dean Tarisai"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>community</category>
      <category>programming</category>
    </item>
    <item>
      <title>Update on huetiful-js v1.5</title>
      <dc:creator>Dean Tarisai</dc:creator>
      <pubDate>Tue, 12 Sep 2023 12:23:24 +0000</pubDate>
      <link>https://dev.to/deantarisai/update-on-huetiful-js-v15-1alj</link>
      <guid>https://dev.to/deantarisai/update-on-huetiful-js-v15-1alj</guid>
      <description>&lt;p&gt;The way software evolves is a matter worth pondering. Over the past few weeks I've seen my package evolve and its API morph over time. I have witnessed the number of downloads of the npm rise and fall like waves in the sea. What I fail to understand so far is why my project has not gathered much attraction on GitHub so far (6 stars so far, not bad for a first project but I was expecting more for the coding hours spent lol). &lt;/p&gt;

&lt;p&gt;Today I released minor version 1.5 of the project and I'm hoping to see changes since I have addressed a lot of hidden bugs, some of which were so critical that they compromised the actual functionality of autility. &lt;/p&gt;

&lt;p&gt;###  Added features  &lt;/p&gt;

&lt;p&gt;Well, for starters, I added a 2 new factors for the &lt;code&gt;sortBy&lt;/code&gt; and &lt;code&gt;filterBy&lt;/code&gt; module. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sortByContrast &lt;/li&gt;
&lt;li&gt;sortByDistance &lt;/li&gt;
&lt;li&gt;filterByDistance &lt;/li&gt;
&lt;li&gt;filterByContrast &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These utilities apply the respective base functionality based on contrast and Euclidean distance. Of course, the functions make use of Culori under the hood to perform the computations necessary needed for the functionalities to work. &lt;/p&gt;

&lt;p&gt;The minor version also comes along with utilities for fetching data of statistical importance such as the smallest hue in a collection of colors.  &lt;/p&gt;

&lt;p&gt;### Bugs addressed &lt;/p&gt;

&lt;p&gt;Open source software is always a work in progress and sometimes the lack of an active user base makes it take longer to address certain issues in a project. &lt;/p&gt;

&lt;p&gt;The filterByTemp and sortByTemp utilities were not working as intended because of a bug that was caused by precision loss when I had refactored the &lt;code&gt;rgb2temp&lt;/code&gt; and &lt;code&gt;temp2rgb&lt;/code&gt; modules to use lodash utilities under the hood for arithmetic operations. The functions responsible for determining the factors needed to sort/filter the colors from collections were throwing only a single value which caused the utilities to hang and not return a value. I addressed the issue by using the simple arithmetic operators on the values necessary for generating the filtering/sorting values. I've learned that over engineering can cause the total opposite of what a developer intended. &lt;/p&gt;

&lt;p&gt;I also extended expression parsing to other core utilities which can mutate colors such as &lt;code&gt;alpha&lt;/code&gt; , &lt;code&gt;darken/brighten&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;I'm grateful for the support that is coming from the open source community as we work towards making color science in code accessible and easy to use with as low a learning curve as possible. &lt;/p&gt;

&lt;p&gt;### Conclusion &lt;/p&gt;

&lt;p&gt;For more information on the changes you can visit the project repository on &lt;a href="https://github.com/prjctimg/huetifulhttps://github.com/prjctimg/huetiful"&gt;GitHub&lt;/a&gt; or download the package on &lt;a href="https://npmjs.com/packages/huetiful-js"&gt;NPM&lt;/a&gt; . Contributions of any kind are welcome! &lt;/p&gt;

&lt;p&gt;May the FOSS be with you👽🛸&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>color</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Working with color programmatically.</title>
      <dc:creator>Dean Tarisai</dc:creator>
      <pubDate>Wed, 30 Aug 2023 18:59:37 +0000</pubDate>
      <link>https://dev.to/deantarisai/working-with-color-programmatically-4nmk</link>
      <guid>https://dev.to/deantarisai/working-with-color-programmatically-4nmk</guid>
      <description>&lt;p&gt;tl;dr &lt;br&gt;
 🎨 &lt;/p&gt;

&lt;p&gt;It's been nearly two years now since I nurtured a keen interest on color and its mathematical nature. I'm not a math nerd (don't get me wrong) but I was amazed by the way one could get colors of a certain look by applying a specific range of values to the channels responsible for achieving the desired effects. &lt;/p&gt;

&lt;p&gt;Most of this effort has been inspired by material I scraped from the open source community. I stand on the shoulders of giants. &lt;/p&gt;

&lt;p&gt;Color has a set of attributes or properties that we can use to describe to the computer how a certain color is supposed to look like. These properties (in this scenario) are &lt;em&gt;hue,saturation,lightness and opacity&lt;/em&gt; . We'll refer to them as channels when we're dealing with them in code. &lt;/p&gt;

&lt;p&gt;These properties achieve different effects if we apply deliberate changes to their values. For example a color with a low value on the lightness channel will appear darker (no surprise on that of course). By keeping the lightness channel clamped whilst tweaking the values of the hue and saturation channels we achieve colors with a certain look. For example pastels have high saturation and low value and are easily reproduced in the HSV color space. &lt;/p&gt;

&lt;p&gt;In huetiful-js there's a &lt;code&gt;pastel()&lt;/code&gt; utility that returns the pastel version of a color from a randomised range in the responsible channels in which we can obtain pastel colors:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;pastel&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;huetiful-js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 

 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;myPastelBlue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;pastel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;blue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myPastelBlue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

 &lt;span class="c1"&gt;// "#030361ff" &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can even pass it to &lt;code&gt;Array.map&lt;/code&gt; and iterate it over a collection of colors and get an array of the pastel versions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;sample&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00ffdc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00ff78&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00c000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#007e00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#164100&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#ffff00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#310000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#3e0000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#4e0000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#600000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#720000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="p"&gt;];&lt;/span&gt; 

 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;samplePastels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pastel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 



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

&lt;/div&gt;



&lt;p&gt;Okay, but what if we wanted colors from a certain hue range ?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;filterByHue&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;huetiful-js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 

 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;sample&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00ffdc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00ff78&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00c000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#007e00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#164100&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#ffff00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#310000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#3e0000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#4e0000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#600000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#720000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="p"&gt;];&lt;/span&gt; 


 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;filteredColors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;filterByHue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 







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

&lt;/div&gt;



&lt;p&gt;But our customer is picky and wants the colors sorted according to hue in ascending order:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
 &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;sortByHue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;filterByHue&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;huetiful-js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 

 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;sample&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00ffdc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00ff78&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#00c000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#007e00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#164100&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#ffff00&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#310000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#3e0000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#4e0000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#600000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#720000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
 &lt;span class="p"&gt;];&lt;/span&gt; 


 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;filteredColors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;filterByHue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;sortedColors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sortByHue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filteredColors&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
 &lt;span class="c1"&gt;// &lt;/span&gt;




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

&lt;/div&gt;



&lt;p&gt;What about lightness,luminance,saturation and (even) temperature ? Yeah you can use those and more as filtering and sorting criterion too &lt;/p&gt;

&lt;p&gt;i think you can see where I'm going with this (hopefully). By encapsulating properties of colors inside functions we can create flexible palettes that we can fine tune using utilities. &lt;/p&gt;

&lt;p&gt;There's even a function that can tell if a color is grayscale or not (go test it out if you think I'm lying. If it fails do a PR). &lt;/p&gt;

&lt;p&gt;You can check out &lt;a href="https://github.com/prjctimg/huetiful"&gt;the repository on GitHub here&lt;/a&gt; or as a &lt;a href="https://www.npmjs.com/package/huetiful-js"&gt;package on npm&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Or just drop an &lt;a href="//prjctimg@outlook.com"&gt;email&lt;/a&gt; and let me know what you think. Or even a simple hello. &lt;/p&gt;

&lt;p&gt;May the FOSS be with you👽🛸. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7u51dcmy94dvbqbownd9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7u51dcmy94dvbqbownd9.png" alt="Huetiful" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>color</category>
      <category>design</category>
    </item>
  </channel>
</rss>
