<?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: Salil Naik</title>
    <description>The latest articles on DEV Community by Salil Naik (@salilnaik).</description>
    <link>https://dev.to/salilnaik</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%2F275615%2F6e82923c-9b38-4f68-89d4-c8d3d3fa86d6.jpeg</url>
      <title>DEV Community: Salil Naik</title>
      <link>https://dev.to/salilnaik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/salilnaik"/>
    <language>en</language>
    <item>
      <title>The uncanny relationship between position fixed and transform property.</title>
      <dc:creator>Salil Naik</dc:creator>
      <pubDate>Sat, 05 Jun 2021 09:10:37 +0000</pubDate>
      <link>https://dev.to/salilnaik/the-uncanny-relationship-between-position-fixed-and-transform-property-32f6</link>
      <guid>https://dev.to/salilnaik/the-uncanny-relationship-between-position-fixed-and-transform-property-32f6</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An element with &lt;code&gt;position:fixed&lt;/code&gt; is positioned relative to the document (the viewport) which acts as its containing block. &lt;/p&gt;

&lt;p&gt;But, it will NOT always be relative to the document. When any element has &lt;code&gt;transform&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt; or &lt;code&gt;perspective&lt;/code&gt; property, it acts as a containing block for all its descendants, including the elements whose position is set to fixed.  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Now, the long story...
&lt;/h2&gt;

&lt;p&gt;While I was working on enhancing the navigation bar of the &lt;br&gt;
&lt;a href="https://wallet.matic.network/" rel="noopener noreferrer"&gt;Polygon Wallet&lt;/a&gt;, I found myself stuck with a strange error. I spent almost a day trying to figure out the issue, consulted with the senior frontend engineers and also thought of making a separate Vue component as a workaround. &lt;/p&gt;

&lt;p&gt;When I finally found the bug, I wouldn't shy away to say that my ego went crashing down, as it was a CSS bug, and my CSS skills are something I take pride in.&lt;/p&gt;

&lt;p&gt;I was doing some changes to the code to align the dropdown menus to the cente of the navigation item (as shown in the picture below) for which I had to move the &lt;em&gt;dropdown component&lt;/em&gt; inside the &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;. Doing this would allow me to use the CSS position and transform properties to align the dropdown exactly at the bottom-center of the navigation item. &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2296vua8gbirmcmwr6z6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2296vua8gbirmcmwr6z6.gif" alt="Dropdown menu opens at the center"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Till now, everything was working fine and nothing was unusual and unexpected. &lt;/p&gt;

&lt;p&gt;Inside the dropdown menu, there were a bunch of notification items, which when clicked would open the modal component. &lt;/p&gt;

&lt;p&gt;The components were nested something like this&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;Notifications&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;dropdown-menu&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;item&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;modal&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;item&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;modal&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/dropdown-menu&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;The &lt;em&gt;modal component&lt;/em&gt;, which was supposed to open at the center of the screen when clicked on the item, would just behave weirdly and open inside the dropdown menu itself. I was sure that, &lt;strong&gt;any element with a fixed position would ignore all its ancestors and position itself relative to the document (the viewport or the root element)&lt;/strong&gt;. But that just didn't happen. The ancestor element, in this case, the &lt;em&gt;dropdown menu&lt;/em&gt; was acting as a containing block for the &lt;em&gt;modal component&lt;/em&gt;.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71u1ovgzttyu8mlydkqa.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71u1ovgzttyu8mlydkqa.gif" alt="Modal opens in a weird way"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And as you might have guessed, it was due to the transform property. &lt;strong&gt;Any element with &lt;code&gt;transform&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt; or &lt;code&gt;perspective&lt;/code&gt; property will act as a containing block to all its descendants, including the elements whose position is set to fixed.&lt;/strong&gt; Hence the modal, instead of positioning itself with respect to the document, positioned itself relative to the dropdown-menu component where I had used the transform property to align it exactly at the bottom-center of the navigation item. See &lt;a href="https://www.w3.org/TR/css-transforms-1/#propdef-transform" rel="noopener noreferrer"&gt;CSS Transform Spec&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How did I fix it?
&lt;/h2&gt;

&lt;p&gt;Well, there is no fix for that, I just removed the transform property, gave a fixed width to all the dropdown components and achieved the same result with the help of the margin and position properties. &lt;em&gt;But this uncanny relationship between position and transform property reminded me why CSS takes the crown as my favorite language even when I have a multi-paradigm language like JavaScript in my stack.&lt;/em&gt; ❤&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk5htlp2bylacit5y92vm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk5htlp2bylacit5y92vm.gif" alt="Modal opens as expected"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thank you!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to learn about CSS positions, refer to&lt;br&gt;
&lt;a href="https://css-tricks.com/almanac/properties/p/position/" rel="noopener noreferrer"&gt;CSS Tricks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/position" rel="noopener noreferrer"&gt;MDN Web Docs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>css3</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Understanding the Synthetix Defi protocol.</title>
      <dc:creator>Salil Naik</dc:creator>
      <pubDate>Sat, 06 Mar 2021 11:23:30 +0000</pubDate>
      <link>https://dev.to/salilnaik/understanding-the-synthetix-defi-protocol-368c</link>
      <guid>https://dev.to/salilnaik/understanding-the-synthetix-defi-protocol-368c</guid>
      <description>&lt;h2&gt;
  
  
  Brief intro to Ethereum and Smart Contracts.
&lt;/h2&gt;

&lt;p&gt;Many people confuse the term &lt;em&gt;Ethereum&lt;/em&gt; to be a cryptocurrency just like bitcoin. For years even I believed the same until recently when I started reading and learning about Ethereum. &lt;/p&gt;

&lt;p&gt;Ethereum, just like bitcoin, allows you to use digital money without payment providers or banks. But &lt;strong&gt;Ethereum is programmable&lt;/strong&gt; 😎. It introduces transaction protocols called &lt;a href="https://en.wikipedia.org/wiki/Smart_contract" rel="noopener noreferrer"&gt;Smart Contracts&lt;/a&gt; which allows the engineers to write programs that can send and receive money. &lt;/p&gt;

&lt;p&gt;This gives birth to a whole new sector called &lt;strong&gt;Decentralized Finance&lt;/strong&gt; or &lt;strong&gt;Defi&lt;/strong&gt; which is to traditional finance what the internet was to paper-based media. Defi refers to financial services using smart contracts which are automated enforceable agreements that don’t need intermediaries like a bank or lawyer and use online blockchain technology instead.&lt;/p&gt;

&lt;p&gt;There are 100s of Defi protocols that are built to solve some of the problems faced in traditional finance. One such protocol is the Synthetix protocol. &lt;/p&gt;

&lt;p&gt;In the simplest words, Synthetix is an Ethereum-based protocol for the issuance of synthetic assets.&lt;/p&gt;

&lt;p&gt;But to understand this, we first need to understand the financial term called Synthetic Assets. &lt;/p&gt;

&lt;h2&gt;
  
  
  Synthetic Assets
&lt;/h2&gt;

&lt;p&gt;This term is not specific to cryptocurrencies or decentralized finance. Instead, it has been there in traditional finance for a long time. &lt;/p&gt;

&lt;p&gt;As per definition, a synthetic asset is a financial instrument that derives its value from another asset. &lt;/p&gt;

&lt;p&gt;For example, synthetic GOLD (sGOLD) derives its value from the real-world asset that is GOLD. Here, &lt;em&gt;synthetic GOLD&lt;/em&gt; is nothing but an imitation, a simulation of the real-world asset.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frw8jdnqoaml7678sjxj3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frw8jdnqoaml7678sjxj3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To understand it better, let us take the Dream11 game as an example. In Dream11, you choose your playing 11 and depending on the player's performance on the field, you earn points/money. But your playing 11 is just a simulation of those real players. &lt;/p&gt;

&lt;p&gt;Similarly, sGOLD is just an imitation of GOLD. And depending on GOLD's performance, the value of sGOLD changes. In the image above, various other synths are shown pegged to their respective real-world assets (fiats, commodities and cryptocurrencies). &lt;code&gt;sBTC -&amp;gt; BTC&lt;/code&gt;, &lt;code&gt;sETH -&amp;gt; ETH&lt;/code&gt;, etc. &lt;/p&gt;

&lt;p&gt;Synthetic assets allow traders to take a position in an asset without actually needing to spend the capital to directly buy or sell that asset. Though this gives the traders exposure to real-world assets, it won't really give them the dividend that the actual stockholders get. Synthetic assets remove any limitations that regulatory bodies place on an individual to start trading the real-world assets. It also allows traders to switch from commodity like sXAU (synthetic Gold) to cryptocurrency like sETH which is not possible in the case of real-world assets. &lt;/p&gt;

&lt;h2&gt;
  
  
  Synthetix Protocol and SNX tokens
&lt;/h2&gt;

&lt;p&gt;Now that we know what synthetic assets are, let us get back to the 1-line definition of the Sythetix Protocol. &lt;/p&gt;

&lt;p&gt;Synthetix is an Ethereum-based protocol for the issuance of synthetic assets. It is a trading platform to buy or sell synthetic assets. &lt;/p&gt;

&lt;p&gt;All the Synths are backed by Synthetix's native token called &lt;strong&gt;SNX&lt;/strong&gt; (Synthetix Network Token). SNX is used as collateral to mint Synths and is currently backed by 800%&lt;sup&gt;1&lt;/sup&gt; &lt;a href="https://dfuse.io/en/collateralization-ratio/" rel="noopener noreferrer"&gt;collateralization ratio&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In other words, to buy synths, users will have to back the amount with an 800% collateralization ratio. For example, to mint 100 USDT, you will have to deposit the equivalent of 800 USDT. &lt;/p&gt;

&lt;p&gt;1 USDT = $1 &lt;/p&gt;

&lt;p&gt;So, to mint 100 USDT, you will have to deposit $800. The high collateral ratio ensures there is enough collateral to absorb large price shocks in the case of big market price wings. &lt;/p&gt;

&lt;p&gt;Synths are minted using &lt;a href="https://mintr.synthetix.io/" rel="noopener noreferrer"&gt;Mintr&lt;/a&gt; which is a decentralized application for interacting with the Synthetix contracts. &lt;/p&gt;

&lt;p&gt;The price of the Synth's is tracked in real-time using Chainlink &lt;a href="https://www.gemini.com/cryptopedia/glossary#oracle" rel="noopener noreferrer"&gt;oracle&lt;/a&gt; data feeds which allows the investors to buy and sell all the assets like real assets, only without a central body. In this way, Synths provide exposure to assets that are normally inaccessible to the average crypto investor — gold and silver, for example — and lets you trade them quickly and efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  How is the Synth peg maintained?
&lt;/h2&gt;

&lt;p&gt;Since the Synths are pegged to the real-world assets, they have to make sure the value remains stable and the ratio is maintained for the well functioning system. &lt;/p&gt;

&lt;p&gt;There are 3 methods to maintain Synth pegs. &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Arbitrage
&lt;/h3&gt;

&lt;p&gt;SNX stakers incur debt when they mint Synths. When the peg collapses, they can profit by buying sUSD back at a lower price and burning it to reducing their debt, as the Synthetix system always values 1 sUSD as $1 USD. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. sETH liquidity pool on Uniswap
&lt;/h3&gt;

&lt;p&gt;When traders stakes/mints their SNX, an exchange fee is generated which is sent to the &lt;a href="https://academy.binance.com/en/articles/what-are-liquidity-pools-in-defi" rel="noopener noreferrer"&gt;liquidity pool&lt;/a&gt; available for SNX stakers to claim their proportion each week. This allows the traders to purchase Synths to start trading or sell Synths to take profits.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. SNX auction
&lt;/h3&gt;

&lt;p&gt;Synthetix is currently trialling a new mechanism with the dFusion protocol (from Gnosis) in which discounted SNX is sold at auction for ETH, which is then used to purchase Synths below the peg.&lt;/p&gt;

&lt;p&gt;Synthetix is one of the top movers in the rapidly growing Defi space and is one of the most complex and useful protocols built on Ethereum to date. While learning about the protocol I had to refer to various articles and youtube videos and so many financial terms to the already complex protocol made it difficult for a beginner to understand. So I decided to write a high-level explanation of the protocol in simple words to help the beginners understand. This article was written under the guidance of my mentor, &lt;a href="https://twitter.com/arthcp" rel="noopener noreferrer"&gt;Arth Patel&lt;/a&gt;, at &lt;strong&gt;Ethereum India Fellowship&lt;/strong&gt;, organized by &lt;a href="https://devfolio.co/" rel="noopener noreferrer"&gt;Devfolio&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Notes
&lt;/h3&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; C-Ratio is 800% at the time of writing this blog. (as per Synthetix Litepaper, V1.4, March 2020). Although this may be raised or lowered in the future through community governance mechanisms.&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Reference&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.gemini.com/cryptopedia/synthetix#section-how-does-synthetix-work" rel="noopener noreferrer"&gt;Synthetix&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Article&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.gemini.com/cryptopedia/glossary#oracle" rel="noopener noreferrer"&gt;oracles&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Glossary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.investopedia.com/articles/forex/061015/top-exchange-rates-pegged-us-dollar.asp" rel="noopener noreferrer"&gt;What is pegging in finance&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Article&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://youtu.be/Hb9tQ437SlA" rel="noopener noreferrer"&gt;What is Synthetix? SNX coin Explained&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Youtube video&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://youtu.be/vl4WRFo3hjg" rel="noopener noreferrer"&gt;How does Synthetix work?&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Youtube video&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://youtu.be/MKVLvlk_Lhs" rel="noopener noreferrer"&gt;Intro to Synthetix, DeFi Derivatives Exchange built on Ethereum&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Youtube video&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>ethereum</category>
      <category>blockchain</category>
      <category>defi</category>
      <category>bitcoin</category>
    </item>
    <item>
      <title>What is web a11y and why is it important?</title>
      <dc:creator>Salil Naik</dc:creator>
      <pubDate>Thu, 01 Oct 2020 13:20:00 +0000</pubDate>
      <link>https://dev.to/salilnaik/what-is-web-a11y-and-why-is-it-important-4fic</link>
      <guid>https://dev.to/salilnaik/what-is-web-a11y-and-why-is-it-important-4fic</guid>
      <description>&lt;p&gt;The term &lt;strong&gt;a11y&lt;/strong&gt; stands for accessibility. A11y is known as numeronym with 11 representing the count of letters between the first and the last letter of the word "accessibility". Some other examples of numeronym are W3C, Y2K, etc. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is web a11y?
&lt;/h2&gt;

&lt;p&gt;The web is designed to work for all, irrespective of their hardware, software, location, language, physical disabilities or situational disabilities. In other words, it just means that the web should be accessible to all no matter what. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The power of the Web is in its universality.&lt;br&gt;
Access by everyone regardless of disability is an essential aspect. - Tim Berners-Lee, inventor of the WWW&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Web a11y has been into the practice since the late 90s, but even 20 years after its inception, it is being treated as an added feature of the website. Making the website accessible, making it easy to use for all the people is an &lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Inclusion_(disability_rights)" rel="noopener noreferrer"&gt;inclusive&lt;/a&gt;&lt;/strong&gt; practice. Every web engineer should make sure that their websites are usable by people with disabilities or impairments. &lt;/p&gt;

&lt;h2&gt;
  
  
  But why is it so important?
&lt;/h2&gt;

&lt;p&gt;The very same question was asked to me when I spoke at National Institute of Technology Goa in Jan 2020 (back when things were normal). And a few months before that, even I had the same question. &lt;/p&gt;

&lt;p&gt;Most of the young developers are clueless about it as there is no awareness around web a11y. Out of so many courses and sessions I attended on web development, not a single one shed light on accessibility. And this is the major reason why developers are not used to making their websites accessible.&lt;/p&gt;

&lt;p&gt;According to the World Health Organization, there are more than 2 billion disabled people, that is 37.5% of the world's population. (2019 data &lt;a href="https://www.inclusivecitymaker.com/disabled-people-in-the-world-in-2019-facts-and-figures/" rel="noopener noreferrer"&gt;source&lt;/a&gt;)  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1.3 billion people are affected by some form of blindness and visual impairment. This represents 17% of the world’s population.&lt;/li&gt;

&lt;li&gt;466 million people have a disabling deafness and hearing loss. This represents 6% of the world’s population.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And to help people with such disabilities use our website without any hassles and not to make them feel left out is the duty of web developers. In some countries like Australia, Canada, Ireland, Italy, Japan, Spain, Sweden, US and UK, digital accessibility is a right protected by law and depriving someone of access is illegal. &lt;/p&gt;

&lt;h2&gt;
  
  
  Okay. Then how do I make my websites accessible?
&lt;/h2&gt;

&lt;p&gt;Disabled people rely on assistive technologies like screen-readers, braille displays, etc, to carry out tasks on the internet. Websites should be developed in a way that they are compatible with all such assistive technology. &lt;/p&gt;

&lt;p&gt;To make the websites accessible you have to use the semantic tags wherever required, use alternate text for images, use only 1 &lt;code&gt;h1&lt;/code&gt; tag per page, have a right colour contrast, etc. Let me know in the comments below if you would like me to write a detailed blog on building accessible websites.&lt;/p&gt;

&lt;p&gt;I have listed down three things that will help you in making the websites accessible. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I have developed a &lt;a href="https://github.com/salil-naik/a11y.css" rel="noopener noreferrer"&gt;CSS tool&lt;/a&gt; that detects the accessibility errors on the website. All you need to do is link it to your page and it will show all the errors. The errors will disappear as you rectify them.&lt;/li&gt;

&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg3tpuc28s2bxtqgulw58.png" alt="screenshot of the website showing a11y errors"&gt;The blured images and **A11Y:HREF should ...** indicates the a11y error on the website.


&lt;li&gt;You can also use &lt;a href="https://developers.google.com/web/tools/lighthouse/?salil-naik-blog" rel="noopener noreferrer"&gt;Lighthouse&lt;/a&gt; in Chrome Dev Tools to run the accessibility audits. It runs a series of audits against the page, and then it generates a report on how well the page did.&lt;/li&gt;

&lt;li&gt;This &lt;a href="https://www.a11yproject.com/checklist/?salil-naik-blog" rel="noopener noreferrer"&gt;checklist&lt;/a&gt; by A11yproject uses The Web Content Accessibility Guidelines (WCAG) as a reference point. It covers almost all the a11y concerns.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>webdev</category>
      <category>sass</category>
    </item>
    <item>
      <title>Custom Checkbox using CSS</title>
      <dc:creator>Salil Naik</dc:creator>
      <pubDate>Fri, 26 Jun 2020 02:02:56 +0000</pubDate>
      <link>https://dev.to/salilnaik/design-checkbox-276d</link>
      <guid>https://dev.to/salilnaik/design-checkbox-276d</guid>
      <description>&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/salilnaik/embed/VweWVrM?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>codepen</category>
    </item>
  </channel>
</rss>
