<?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: Krzysztof Krysiński</title>
    <description>The latest articles on DEV Community by Krzysztof Krysiński (@flabbet).</description>
    <link>https://dev.to/flabbet</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%2F284887%2F6696dd10-a102-41ab-8442-19413e5cefc9.png</url>
      <title>DEV Community: Krzysztof Krysiński</title>
      <link>https://dev.to/flabbet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/flabbet"/>
    <language>en</language>
    <item>
      <title>How do color pickers work? - HSL Panel</title>
      <dc:creator>Krzysztof Krysiński</dc:creator>
      <pubDate>Sat, 29 Aug 2020 17:54:42 +0000</pubDate>
      <link>https://dev.to/flabbet/how-does-color-pickers-work-hsl-panel-2ff6</link>
      <guid>https://dev.to/flabbet/how-does-color-pickers-work-hsl-panel-2ff6</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In this part, I'll explain the theory behind colors and build the HSL Color panel, this is a first color picker I'll cover.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: I will &lt;strong&gt;not&lt;/strong&gt; explain the math behind colorspace conversions&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What is the color?
&lt;/h1&gt;

&lt;p&gt;English Wikipedia says a &lt;em&gt;Color is the visual perceptual property corresponding in humans to the categories called red, yellow, blue, etc.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In computer science, colors are defined in a lot of different ways, we have color spaces like RGB, CMYK, HSL, YCbCr, and more.&lt;/p&gt;

&lt;p&gt;In this part, we will focus on RGB and HSL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why there isn't one unified color format?
&lt;/h2&gt;

&lt;p&gt;Because it's impossible! All color spaces have different properties, and they are used for different things.&lt;/p&gt;

&lt;p&gt;Let's get an RGB and CMYK for example.&lt;/p&gt;

&lt;h2&gt;
  
  
  RGB
&lt;/h2&gt;

&lt;p&gt;RGB is a color format that uses the Red Green and Blue channel to represent the color by additive color mixing. That means when you project all three colors, you'll get white.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bf0cBtJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/2/28/RGB_illumination.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bf0cBtJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/2/28/RGB_illumination.jpg" alt="visual representation of RGB illumination"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;RGB is mostly used in displays, each pixel is divided into 3 "subpixels" which are R, G, and B channels. Displays are black when turned off*, so RGB is good for the task.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;*Well, black is displayed differently on different screen types, OLED does that by turning off individual pixels, but LED can't do that, it imitates black, that's why OLED screens can achieve true blackness&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Red, green, and blue?
&lt;/h3&gt;

&lt;p&gt;The answer is simple, it's because of how our eye is built and how do we perceive colors. I won't dig into details, you can read more about RGB on very complex and detailed &lt;a href="https://en.wikipedia.org/wiki/RGB_color_model"&gt;Wikipedia article&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CMYK
&lt;/h2&gt;

&lt;p&gt;Cyan, Magenta, Yellow, and Key (Black)&lt;/p&gt;

&lt;p&gt;CMYK, on the other hand, uses subtractive color mixing, instead of additive, when you project the Cyan, Magenta, and Yellow it will yield the black color.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WlVSMWGT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/c/c9/CMYK_subtractive_color_mixing.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WlVSMWGT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/c/c9/CMYK_subtractive_color_mixing.svg" alt="CMYK subtractive color mixing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see that on both images, you can distinct the RGB and CMY.&lt;/p&gt;

&lt;p&gt;CMYK color space is used mostly in printing, paper sheets are white, so you don't need any ink for white color, but you need all colors to get black, that's why RGB wouldn't work for printing. CMYK is the reason why you can't sometimes print a black document because of a lack of Magenta ink.&lt;/p&gt;

&lt;h1&gt;
  
  
  Color range gradient
&lt;/h1&gt;

&lt;p&gt;I bet you saw a gradient like that somewhere&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eJn1sMLK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/PixiEditor/ColorPicker/master/src/ColorPicker/Images/ColorPalette.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eJn1sMLK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/PixiEditor/ColorPicker/master/src/ColorPicker/Images/ColorPalette.png" alt="color gradient"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But, how is it made?&lt;/p&gt;

&lt;p&gt;Let me introduce you to an HSL format.&lt;/p&gt;

&lt;h1&gt;
  
  
  Hue, Saturation and Lightness
&lt;/h1&gt;

&lt;p&gt;This is what the name stands for. It's different from RGB and CMYK because each value doesn't describe a "separate color". &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uK_AFDoh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/6/6b/HSL_color_solid_cylinder_saturation_gray.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uK_AFDoh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/6/6b/HSL_color_solid_cylinder_saturation_gray.png" alt="HSL color cylinder"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hue - 0-360° - a &lt;em&gt;pure&lt;/em&gt; pigment, the main property&lt;br&gt;
Saturation - 0-100% (or 0-1) - a greyness property&lt;br&gt;
Lightness - 0-100% (or 0-1) - a color lightness property, where 0 is black and 100 is white&lt;/p&gt;

&lt;p&gt;Hue values: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ui8MKdhP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/a/ad/HueScale.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ui8MKdhP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/a/ad/HueScale.svg" alt="Hue values image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Cool, but what about that?
&lt;/h2&gt;

&lt;p&gt;This color space is ideal to easily represent data in 2D space. We can associate the X and Y coordinates with H and S values. By doing so, we can achieve the mentioned gradient above.&lt;/p&gt;

&lt;p&gt;I prepared a small &lt;a href="https://gist.github.com/flabbet/45d41e365dd59d7ea4528a8297cb0c50"&gt;gist&lt;/a&gt; in python to generate it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;PIL&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;colorsys&lt;/span&gt;

&lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;360&lt;/span&gt;
&lt;span class="n"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;

&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"RGB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;colorsys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hls_to_rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;359&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;putpixel&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;

&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"ColorPalette.png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"PNG"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Color is calculated based on X and Y coordinates from HSL, converted to RGB, and then displayed on the screen. Isn't that neat?&lt;/p&gt;

&lt;p&gt;So whenever the user clicks on some part of this gradient, we can easily get color based on coordinates(X: Hue - 0-360, Y: Saturation - 0-100 and Lightness 100%)&lt;/p&gt;

&lt;p&gt;We can create almost any other color picking widget by using the HSL color space.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I described almost all knowledge &lt;em&gt;needed to understand single panel HSL color picker&lt;/em&gt;, but there is a lot more to learn about colors, it's a huge topic and worth to dive in.&lt;/p&gt;

&lt;p&gt;Stay tuned!&lt;/p&gt;

</description>
      <category>colorpicker</category>
      <category>tutorial</category>
      <category>colors</category>
      <category>python</category>
    </item>
    <item>
      <title>How do color pickers work?</title>
      <dc:creator>Krzysztof Krysiński</dc:creator>
      <pubDate>Sat, 29 Aug 2020 17:54:31 +0000</pubDate>
      <link>https://dev.to/flabbet/how-does-color-pickers-work-1275</link>
      <guid>https://dev.to/flabbet/how-does-color-pickers-work-1275</guid>
      <description>&lt;h1&gt;
  
  
  About
&lt;/h1&gt;

&lt;p&gt;In this series, I'll explain the theory and techniques behind color pickers. I'll talk about concepts and link code examples from a &lt;a href="https://github.com/PixiEditor/ColorPicker"&gt;real project&lt;/a&gt;, which you can download on &lt;a href="https://www.nuget.org/packages/PixiEditor.ColorPicker/"&gt;NuGet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This widget was written for &lt;a href="https://github.com/PixiEditor/PixiEditor"&gt;a pixel art editor&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction to types of color pickers
&lt;/h1&gt;

&lt;p&gt;There are a lot of different approaches to color picking and frankly, there is no perfect solution, every approach has pros and cons. I'll cover the necessary theoretical knowledge, so you could build your own.&lt;/p&gt;

&lt;p&gt;Ready to go? Awesome! Let's start with &lt;a href="https://dev.to/flabbet/how-does-color-pickers-work-hsl-panel-2ff6"&gt;color theory and a single panel HSL color picker&lt;/a&gt;&lt;/p&gt;

</description>
      <category>colorpicker</category>
      <category>tutorial</category>
      <category>theory</category>
    </item>
    <item>
      <title>Anyone know good technical documentation service?</title>
      <dc:creator>Krzysztof Krysiński</dc:creator>
      <pubDate>Wed, 03 Jun 2020 09:46:30 +0000</pubDate>
      <link>https://dev.to/flabbet/anyone-know-good-technical-documentation-service-1en</link>
      <guid>https://dev.to/flabbet/anyone-know-good-technical-documentation-service-1en</guid>
      <description>&lt;p&gt;Hey, I have quite complex piece of software on Github, and I want to document it, Normally I would use GitHub pages, but as I said, It's quite big so I don't know if there is something better out there.&lt;br&gt;
Thanks&lt;/p&gt;

</description>
      <category>docs</category>
      <category>code</category>
      <category>question</category>
    </item>
    <item>
      <title>Best Web Browsers in 2021</title>
      <dc:creator>Krzysztof Krysiński</dc:creator>
      <pubDate>Wed, 19 Feb 2020 13:12:18 +0000</pubDate>
      <link>https://dev.to/flabbet/best-web-browsers-in-2020-3ip0</link>
      <guid>https://dev.to/flabbet/best-web-browsers-in-2020-3ip0</guid>
      <description>&lt;h1&gt;
  
  
  tl;dr
&lt;/h1&gt;

&lt;p&gt;Best overall: &lt;a href="https://brave.com/fla589"&gt;Brave&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most Customizable: &lt;a href="https://vivaldi.com"&gt;Vivaldi&lt;/a&gt;&lt;br&gt;
Best Privacy: &lt;a href="https://brave.com/fla589"&gt;Brave&lt;/a&gt;&lt;br&gt;
Best Synchronization: &lt;a href="https://www.google.com/intl/en/chrome/"&gt;Google Chrome&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;I've been testing a lot of different web browsers for past few years and this article is here to help you with choice.&lt;/p&gt;

&lt;p&gt;Every web browser mentioned here is good, fast and feature-rich, there is no best one, these choices are my subjective and they are just to help you with picking &lt;strong&gt;your&lt;/strong&gt; best.&lt;/p&gt;

&lt;h1&gt;
  
  
  What I took into consideration
&lt;/h1&gt;

&lt;p&gt;There are 4 main factors I considered most important: &lt;strong&gt;Privacy&lt;/strong&gt;, &lt;strong&gt;Synchronization&lt;/strong&gt; and &lt;strong&gt;Customization options&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'll talk about them at first. But I'll only talk about browsers that stands out in each section, I am not going to describe every browser in every section.&lt;/p&gt;

&lt;h1&gt;
  
  
  Privacy
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Brave
&lt;/h2&gt;

&lt;p&gt;Absolute leader here is &lt;a href="https://brave.com/fla589"&gt;Brave&lt;/a&gt;. Main idea of this browser was complete privacy. &lt;/p&gt;

&lt;p&gt;It has built-in Ad-blocker, Cross-site trackers blocker, HTTPS upgrades and many more as function called &lt;strong&gt;Shields&lt;/strong&gt;. Another great thing is serverless synchronization between devices, no accounts, no logins. Just Sync Chains.&lt;/p&gt;

&lt;p&gt;Besides Incognito mode, Brave has Tor support built-in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Firefox
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.mozilla.org/en-US/firefox"&gt;Firefox&lt;/a&gt; blocks trackers as well and has interesting feature called Firefox Monitor, which alerts you about data breaches you've been included in. Besides that it has a few privacy friendly features like Send and Lockwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opera
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.opera.com/"&gt;Opera&lt;/a&gt; just like Firefox and Brave, blocks trackers and has built-in Ad-blocker. Except that it includes free VPN which replaces your IP Address and protects you in public networks.&lt;/p&gt;

&lt;h1&gt;
  
  
  Synchronization
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Google Chrome
&lt;/h2&gt;

&lt;p&gt;Unbeatable winner here is &lt;a href="https://www.google.com/intl/en/chrome/"&gt;Google Chrome&lt;/a&gt;. We are surrounded by Google, and Google Chrome easily syncs all of our data across devices. This is unfortunately at the expense of privacy.&lt;/p&gt;

&lt;p&gt;Google Chrome syncs all of the data, from browsing history to browser extensions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vivaldi
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vivaldi.com"&gt;Vivaldi&lt;/a&gt; does a great job in data sync, it allows to synchronize bookmarks, passwords, open tabs and more. It's great if you are using Vivaldi on Mobile.&lt;/p&gt;

&lt;p&gt;You can create sync profiles and use it as guest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Firefox
&lt;/h2&gt;

&lt;p&gt;Same as Vivaldi, great sync options when using multiple devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microsoft Edge (Chromium)
&lt;/h2&gt;

&lt;p&gt;For now sync is limited to Favourites, Settings, Adresses and Passwords, but Microsoft promises to add support for History, Open tabs, Extensions and Collections.&lt;/p&gt;

&lt;p&gt;Edge uses Microsoft account for synchronizing, so it's a good choice if you are Microsoft fan.&lt;/p&gt;

&lt;h1&gt;
  
  
  Customization
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Vivaldi
&lt;/h2&gt;

&lt;p&gt;If you are a fan of customizing things, you'll gonna love &lt;a href="https://vivaldi.com"&gt;Vivaldi&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This browser can be customized in almost any way. You can change position of address bar, tabs, side panel, bookmark bar and more. It comes with great themes engine with a lot pre-built themes, it allows you to schedule theme changing and even integrate them with Razer Chroma and Philips Hue.&lt;/p&gt;

&lt;p&gt;Except visual customization, Vivaldi allows to personalize a lot of behavior like keyboard shortcuts and mouse gestures. You can change default search engines to almost whatever you want, you are not only limited to Google, Duck Duck Go and Bing. &lt;/p&gt;

&lt;p&gt;Customizing Vivaldi could be topic for a separate article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other browsers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Firefox
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.mozilla.org/en-US/firefox"&gt;Firefox&lt;/a&gt; does a great job in terms of customization too, mostly due to Firefox Addons.&lt;/p&gt;

&lt;h3&gt;
  
  
  Microsoft Edge (Chromium) and Opera
&lt;/h3&gt;

&lt;p&gt;Both allows to customize basic things like theme and fonts, but besides that they allow to customize news feed on on startup page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Other Chromium based browsers
&lt;/h3&gt;

&lt;p&gt;Thanks to Chrome Extensions most of Chromium based web browsers are quite well customizable.&lt;/p&gt;

&lt;h1&gt;
  
  
  Other great features
&lt;/h1&gt;

&lt;p&gt;Now I'll talk about unique or worth to mention features on different browsers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Brave
&lt;/h2&gt;

&lt;p&gt;Except Privacy, &lt;a href="https://brave.com/fla589"&gt;Brave&lt;/a&gt; has Crypto Wallets and unique cryptocurrency called BAT. From time to time personalized advertisement shows (if you turn them on!) as system popup, when you click on it, you'll earn cryptocurrency called BAT which you can withdraw or send as tip to other creators. I think this is a awesome feature.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1XYGMiYq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8hw56pxks8190128u1yp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1XYGMiYq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8hw56pxks8190128u1yp.png" alt="BAT window"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Vivaldi
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vivaldi.com"&gt;Vivaldi's&lt;/a&gt; &lt;strong&gt;side bar&lt;/strong&gt; is a very comfortable tool, you can add any website you want to quickly open it on the side without leaving page you are currently on. It is great for messaging apps like Messenger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshots&lt;/strong&gt; are another very handy tool that allows you to screenshot selected area or whole page (without scrolling!), you can save them as PNG, JPEG or copy to clipboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Page Actions&lt;/strong&gt; is a great feature for us, programmers and not only. It allows to manipulate pages we are on. Here is a full list of thing you can do with it&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g3TvQjlW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bsy5tewqvfkf644bk8e9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g3TvQjlW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bsy5tewqvfkf644bk8e9.png" alt="Page Actions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Opera
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Screenshot utility&lt;/strong&gt;, simillar to Vivaldi's&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side bar&lt;/strong&gt; just like Vivali's, but with less customization options, it comes with Messenger, Whatsapp, Telegram and VK support.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.opera.com/"&gt;Opera&lt;/a&gt; most unique thing is &lt;strong&gt;free unlimited VPN&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gvq--6am--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9gm5c1n12sitxjycnw9j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gvq--6am--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9gm5c1n12sitxjycnw9j.png" alt="Opera VPN"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Firefox
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.mozilla.org/en-US/firefox"&gt;Firefox&lt;/a&gt; comes with &lt;strong&gt;Firefox Monitor, Send and Lockwise&lt;/strong&gt;. Monitor alerts you about data breaches, Send allows to send securely files and Lockwise is password manager.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NG_aerf8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tckgtab5fciwxl4yigri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NG_aerf8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tckgtab5fciwxl4yigri.png" alt="Firefox Monitor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Microsoft Edge (Chromium)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.microsoft.com/en-us/edge"&gt;Microsoft Edge&lt;/a&gt; at the moment has &lt;strong&gt;personalizable news feed&lt;/strong&gt; and &lt;strong&gt;save site as app&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DZ5gv2-Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/drt4plyqx0yfreqp2jzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DZ5gv2-Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/drt4plyqx0yfreqp2jzo.png" alt="Edge News Feed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Why I chose Brave as best web browser?
&lt;/h1&gt;

&lt;p&gt;As a programmer, privacy is very important thing to me. &lt;a href="https://brave.com/fla589"&gt;Brave&lt;/a&gt; is fully featured and doesn't lack &lt;em&gt;anything&lt;/em&gt; that web browser should have. Except that I am crypto fan and earning BATs feels good!&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Choosing right web browser is very important, this is a tool you use most often. Therefore sitting for a while and testing what works best for you is recommended. Especially if you are a programmer.&lt;/p&gt;

&lt;p&gt;I hope you liked this article. I'd really appreciate a like or comment!&lt;/p&gt;

&lt;p&gt;P.S Links to Brave are referrals, but it's just a way of support, it doesn't affect point of view in the article :)&lt;/p&gt;

</description>
      <category>browsers</category>
      <category>webbrowsers</category>
      <category>2020</category>
      <category>web</category>
    </item>
  </channel>
</rss>
