<?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>Forem: Jishnu Prasad Samal</title>
    <description>The latest articles on Forem by Jishnu Prasad Samal (@jishnupsamal).</description>
    <link>https://forem.com/jishnupsamal</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%2F912876%2F64f45049-9308-498a-8f38-f77268f47d84.png</url>
      <title>Forem: Jishnu Prasad Samal</title>
      <link>https://forem.com/jishnupsamal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jishnupsamal"/>
    <language>en</language>
    <item>
      <title>Web Accessibility - Designing for All</title>
      <dc:creator>Jishnu Prasad Samal</dc:creator>
      <pubDate>Tue, 02 Jan 2024 10:00:00 +0000</pubDate>
      <link>https://forem.com/jishnupsamal/web-accessibility-designing-for-all-49i2</link>
      <guid>https://forem.com/jishnupsamal/web-accessibility-designing-for-all-49i2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to Web Accessibility
&lt;/h2&gt;

&lt;p&gt;If we go by &lt;a href="https://en.wikipedia.org/wiki/Web_accessibility"&gt;Wikipedia&lt;/a&gt;, Web Accessibility is the inclusive practice of ensuring there are no barriers that prevent interaction with, or access to, websites on the World Wide Web by people with physical disabilities, situational disabilities, and socio-economic restrictions on bandwidth and speed. When sites are correctly designed, developed and edited, more users have equal access to information and functionality. &lt;/p&gt;

&lt;p&gt;In simple words, Web Accessibility is the practice of creating such websites that can be used by people, irrespective of any physical disabilities, situational disabilities, or socio-economic restrictions on bandwidth and speed. For example, when adding an image to a html page using &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tag, passing a meaningful &lt;code&gt;alt&lt;/code&gt; attribute makes it more accessible, as now visually impaired people can also know what that particular image contains using a screen reader.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o2W2V9bg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181956/jishnupsamal/uploads/2024/wgfsqhk1k1cbhol7lyui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o2W2V9bg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181956/jishnupsamal/uploads/2024/wgfsqhk1k1cbhol7lyui.png" alt="Data by WHO" width="408" height="407"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Data by &lt;a href="https://www.who.int/news-room/fact-sheets/detail/disability-and-health"&gt;WHO&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
According to an estimate by &lt;a href="https://www.who.int/news-room/fact-sheets/detail/disability-and-health"&gt;World Health Organization&lt;/a&gt;, 1.3 billion people experience significant disability. This represents 16% of the world’s population, or 1 in 6 of us.&lt;/p&gt;

&lt;p&gt;The needs that web accessibility aims to address include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual&lt;/li&gt;
&lt;li&gt;Motor/mobility&lt;/li&gt;
&lt;li&gt;Auditory&lt;/li&gt;
&lt;li&gt;Seizures&lt;/li&gt;
&lt;li&gt;Cognitive and Intellectual&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Understanding Web Accessibility
&lt;/h2&gt;

&lt;p&gt;Web was created with the aim of providing informational content to everybody, whatever their background. But when websites or web apps are badly designed, they create barriers and prevent certain sections of the society from accessing the information they provide.&lt;/p&gt;

&lt;p&gt;Accessibility means creating websites, apps and tools that are accessible to everybody, irrespective of any disability or restrictions. Web Accessibility improves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the way people interact on the web.&lt;/li&gt;
&lt;li&gt;The contribution of people to the web.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Web accessibility encompasses all disabilities that affect access to the Web, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auditory&lt;/strong&gt; - Total or significant loss of hearing. Also known as hearing impairment, this condition includes permanent or fluctuating hearing problems. Auditory impairment can range from slight and mild to severe and profound.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s7N2vrA5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181954/jishnupsamal/uploads/2024/uz5ojf49fabodbcnv9dd.jpg" alt="Auditory Impairment" width="640" height="360"&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@benjirokaneki?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;Vladislav Anchuk&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-woman-with-headphones-on-her-ears-wu4AcnOnyBQ?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognitive&lt;/strong&gt; - A cognitive impairment (also known as an intellectual disability) is a term used when a person has certain limitations in mental functioning and in skills such as communication, self-help, and social skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neurological&lt;/strong&gt; - Neurological disorders are diseases of the central and peripheral nervous system. These disorders include epilepsy, Alzheimer disease and other dementias, cerebrovascular diseases including stroke, migraine and other headache disorders, multiple sclerosis, Parkinson's disease, neuro-infections, brain tumors and many others.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physical&lt;/strong&gt; - Physical disability indicates any physical limitations or disabilities that inhibit the physical function of one or more limbs of a certain person. It can be temporary or permanent. The causes of this kind of disease are various.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vDO2cYPX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181955/jishnupsamal/uploads/2024/dffmied7bb1ii1wauzsb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vDO2cYPX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181955/jishnupsamal/uploads/2024/dffmied7bb1ii1wauzsb.jpg" alt="Physical Impairment" width="640" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@jontyson?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;Jon Tyson&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/man-in-brown-jacket-and-black-pants-riding-black-and-red-motorcycle-O7ke8N4kTpQ?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speech&lt;/strong&gt; - Speech disorders or speech impairments are a type of communication disorder in which normal speech is disrupted. This can mean fluency disorders like stuttering, cluttering or lisps. Someone who is unable to speak due to a speech disorder is considered mute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual&lt;/strong&gt; - Vision impairment occurs when an eye condition affects the visual system and its vision functions. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/3f31oufqFSM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Web Accessibility Barriers
&lt;/h2&gt;

&lt;p&gt;Let's take a look at some common accessibility barriers that people commonly face:&lt;/p&gt;

&lt;h3&gt;
  
  
  Auditory Barriers
&lt;/h3&gt;

&lt;p&gt;People suffering from deafness or any other auditory problem cannot hear voice in videos, podcasts and other sources of audio on the Web. That's why captions and audio transcriptions should be provided to help them understand what is being conveyed by the audio.&lt;/p&gt;

&lt;p&gt;For individuals with hearing difficulties, the absence of auditory cues presents a substantial obstacle in comprehending information conveyed through spoken words. As a result, providing captions and audio transcriptions becomes imperative to bridge this communication gap. Captions, in the form of synchronized text displayed on-screen, enable individuals with hearing impairments to follow along with the dialogue or narrative of a video. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KD7GGq8p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181961/jishnupsamal/uploads/2024/quvemjkbchjrzq6fcxb5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KD7GGq8p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181961/jishnupsamal/uploads/2024/quvemjkbchjrzq6fcxb5.jpg" alt="Auditory Barriers" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://www.pexels.com/photo/low-angle-view-of-lighting-equipment-on-shelf-257904/"&gt;Pixabay&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
Likewise, audio transcriptions, which are textual representations of spoken content, offer a means for these individuals to access and understand the information presented in podcasts and other audio formats.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cognitive &amp;amp; Learning Barriers
&lt;/h3&gt;

&lt;p&gt;As the name suggests, this barrier limits the cognitive abilities of a person and hence prevents the person from learning. Everyone is capable of learning, but students who have cognitive learning barriers are likely to need more time to learn and develop certain skills, and there may be certain things they cannot learn, depending on the severity of their learning barrier (Ohio Coalition for the Education of Children with Disabilities, 2020). &lt;/p&gt;

&lt;p&gt;It's essential to recognize that while everyone is capable of learning, individuals facing cognitive learning barriers may require additional support and accommodations. The severity of these barriers can vary widely, affecting the pace at which individuals acquire new skills and comprehend information. In some cases, there may be certain limitations on what can be learned, depending on the extent of the cognitive challenge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KgSmTJd1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181955/jishnupsamal/uploads/2024/o2poxuscn5hhp2bc7rch.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KgSmTJd1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181955/jishnupsamal/uploads/2024/o2poxuscn5hhp2bc7rch.jpg" alt="Cognitive &amp;amp; Learning Barriers" width="640" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://www.pexels.com/photo/person-in-white-shirt-with-brown-wooden-frame-4769486/"&gt;cottonbro studio&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
To overcome these barriers, steps should be taken to make web pages simple and easy to understand. Websites should have clear navigation, and they should have consistent design across all pages. Incorporate multimedia elements judiciously. Ensure that images, videos, and other multimedia content enhance understanding rather than causing confusion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Visual Barriers
&lt;/h3&gt;

&lt;p&gt;People who suffer from blindness, partial blindness or any other visual impairment cannot see what is written on the page, nor could they type using a normal keyboard. Addressing visual barriers is essential for creating inclusive environments and ensuring equal access to information and activities for people with visual impairments. &lt;/p&gt;

&lt;p&gt;Websites that present heavy visual element without any text representation can be challenging to understand for them. Text too small, websites which lacks contrast or is presented in difficult-to-read fonts can be a significant barrier for individuals with visual impairments. Environments that lack audio cues or information can be disorienting for individuals with visual impairments. &lt;/p&gt;

&lt;p&gt;Addressing visual barriers requires a multifaceted approach, incorporating both physical modifications and the integration of inclusive design principles in digital and informational contexts. Special keyboards called Braille Keyboards are available in the market, which allow visually impaired people to type. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VF6ALjnN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181954/jishnupsamal/uploads/2024/irhrrchojjpivztl1emw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VF6ALjnN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181954/jishnupsamal/uploads/2024/irhrrchojjpivztl1emw.png" alt="ALT Attribute" width="450" height="340"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;ALT Attribute - Author: &lt;a href="https://www.seobility.net/en/wiki/ALT_Attributes"&gt;Seobility&lt;/a&gt; - License: CC BY-SA 4.0&lt;/em&gt;&lt;br&gt;
Speech Recognition systems should be used on websites, and they should be improved to understand non-English languages more precisely. Images should have captions to make them understandable by screen readers and other assistive technologies. Text should be legible to read and users should be provided with the option to configure text.&lt;/p&gt;

&lt;h3&gt;
  
  
  Motor &amp;amp; Mobility Barriers
&lt;/h3&gt;

&lt;p&gt;Technology and devices that are not designed to accommodate individuals with motor impairments, make it challenging for them to interact with computers, smartphones, or other digital interfaces. Solutions like voice recognition, touch screens with customizable controls and alternative input devices like gesture recognition devices should be developed and implemented at lower costs, so that everyone can have access to the Web.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Content Accessibility Guidelines (WCAG)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5iplL6Nc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181956/jishnupsamal/uploads/2024/xlscegjui12sy3k9dnhs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5iplL6Nc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181956/jishnupsamal/uploads/2024/xlscegjui12sy3k9dnhs.png" alt="W3C" width="800" height="545"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;W3C&lt;/em&gt;&lt;br&gt;
According to &lt;a href="https://www.w3.org/WAI/standards-guidelines/wcag/#intro"&gt;World Wide Web Consortium (W3C)&lt;/a&gt;, Web Content Accessibility Guidelines (WCAG) is developed through the W3C process in cooperation with individuals and organizations around the world, with a goal of providing a single shared standard for web content accessibility that meets the needs of individuals, organizations, and governments internationally.&lt;/p&gt;

&lt;p&gt;WCAG is a technical standard to make web pages accessible. For each guideline, there are testable success criteria. The success criteria are at three levels: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt; - the Web page satisfies all the Level A Success Criteria, or a conforming alternate version is provided.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AA&lt;/strong&gt; - the Web page satisfies all the Level A and Level AA Success Criteria, or a Level AA conforming alternate version is provided.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AAA&lt;/strong&gt; - the Web page satisfies all the Level A, Level AA and Level AAA Success Criteria, or a Level AAA conforming alternate version is provided.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BBs6bRuR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181957/jishnupsamal/uploads/2024/hfj0jquhetc7de7z9smf.jpg" alt="Accessibility" width="800" height="533"&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@alterego_swiss?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;AbsolutVision&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/handicap-symbol-UudGNHJdNSo?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;According to &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/intro#understanding-the-four-principles-of-accessibility"&gt;W3C&lt;/a&gt;, the guidelines and Success Criteria are organized around the following four principles, which lay the foundation necessary for anyone to access and use Web content. Anyone who wants to use the Web must have content that is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Perceivable&lt;/strong&gt; - Information and user interface components must be presentable to users in ways they can perceive. This means that users must be able to perceive the information being presented (it can't be invisible to all of their senses)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Operable&lt;/strong&gt; - User interface components and navigation must be operable. This means that users must be able to operate the interface (the interface cannot require interaction that a user cannot perform)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Understandable&lt;/strong&gt; - Information and the operation of user interface must be understandable. This means that users must be able to understand the information as well as the operation of the user interface (the content or operation cannot be beyond their understanding)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Robust&lt;/strong&gt; - Content must be robust enough that it can be interpreted reliably by a wide variety of user agents, including assistive technologies. This means that users must be able to access the content as technologies advance (as technologies and user agents evolve, the content should remain accessible)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If any of these are not true, users with disabilities will not be able to use the Web. &lt;/p&gt;

&lt;h2&gt;
  
  
  Testing &amp;amp; Tools
&lt;/h2&gt;

&lt;p&gt;When you create an accessible website, you must always test it for accessibility to know how accessible it is. Testing helps you to identify any loopholes in accessibility in your website and improve it over time. Now, let's dive into accessibility testing tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessibility Testing Tools
&lt;/h3&gt;

&lt;p&gt;There are two types of accessibility testing tools:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automated Testing Tools&lt;/strong&gt; - These are automated tools which evaluate a website's code and content for accessibility and provide guidance on how to fix the issues. And, save your time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manual Testing Tools&lt;/strong&gt; - These require you to manually scan one page at a time and can cat the errors which automated tools might fail to catch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are various accessibility testing tools available that can assist web developers, designers, and content creators in identifying potential accessibility issues. Here are some commonly used accessibility testing tools:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://wave.webaim.org/"&gt;WAVE (Web Accessibility Evaluation Tool)&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Jw8HpwnN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181956/jishnupsamal/uploads/2024/uplxzy6hachdayegv0rb.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Jw8HpwnN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181956/jishnupsamal/uploads/2024/uplxzy6hachdayegv0rb.svg" alt="WAVE Logo" width="182" height="69"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://wave.webaim.org"&gt;WAVE&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
WAVE is a suite of evaluation tools that help authors make their web content more accessible to individuals with disabilities. It provides visual feedback about the accessibility of your web content by injecting icons and indicators into your page.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.deque.com/axe/"&gt;axe Accessibility Checker&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The axe Accessibility Checker is a browser extension that can automatically scan your website for WCAG 2.1 conformance and provide detailed information about identified issues.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://developer.chrome.com/docs/lighthouse"&gt;Google Lighthouse&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--duQa0vbZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181955/jishnupsamal/uploads/2024/jib6j7594jcm03v3kasj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--duQa0vbZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1704181955/jishnupsamal/uploads/2024/jib6j7594jcm03v3kasj.png" alt="Lighthouse Logo" width="512" height="512"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Lighthouse&lt;/em&gt;&lt;br&gt;
Google Lighthouse is an open-source, automated tool for improving the quality of web pages. It has audits for performance, accessibility, progressive web apps, SEO, and more.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.siteimprove.com/toolkit/accessibility-checker/"&gt;Siteimprove Accessibility Checker&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Siteimprove offers an Accessibility Checker that helps you identify and fix accessibility issues on your website. It provides clear explanations of issues and suggested solutions.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://pa11y.org/"&gt;Pa11y&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Pa11y is a command-line interface that allows you to run accessibility tests on your web pages. It is flexible and can be integrated into different development workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Words
&lt;/h2&gt;

&lt;p&gt;Web Accessibility is an essential component of building websites and webpages. Yet, many developers (including me) forget this while creating a website. While building a perfectly accessible website is nearly impossible (nothing is perfect), but we should definitely try to create such websites and apps which can be accessed by most sections of the society, if not all.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎊 New Year, New Commitments: Embrace Web Accessibility!
&lt;/h3&gt;

&lt;p&gt;As we joyfully welcome the dawn of a new year, let's make a collective resolution to foster a digital space that celebrates diversity and ensures equal access for all.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pledge for Inclusivity:&lt;/strong&gt; Make a promise to prioritize web accessibility in all your digital endeavors. Let's commit to creating a more welcoming online environment for everyone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Celebrate Diversity:&lt;/strong&gt; Acknowledge the richness of human experiences and perspectives. Ensure that your online platforms reflect inclusivity, accommodating users with varying abilities and needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Perform an Accessibility Check:&lt;/strong&gt; Kick-start the year by auditing your digital content using accessibility tools. Identify and address potential barriers to create a more universally accessible website.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Spread the Message:&lt;/strong&gt; Share the importance of web accessibility with your network. Encourage colleagues, friends, and fellow creators to embark on the journey toward a more inclusive online world.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set Accessible Goals:&lt;/strong&gt; Just as you set personal and professional goals for the new year, integrate accessibility goals into your projects. Small steps today lead to a more accessible tomorrow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Illuminate the Digital Landscape:&lt;/strong&gt; Let your commitment to accessibility shine brightly in the digital realm. Illuminate the path for others to follow, fostering a community that values and champions inclusivity.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Cheers to a Year of Inclusion and Empowerment! 🥂&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;May this new year be a testament to our shared commitment to accessibility, creating a web that transcends barriers and uplifts every user. Here's to a year of progress, understanding, and digital harmony! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;And lastly...&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Wishing you a year filled with joy, success, and memorable moments. Happy New Year!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://jishnupsamal.me/blog/web-accessibility-designing-for-all"&gt;jishnupsamal.me&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>web</category>
      <category>webaccessibility</category>
    </item>
    <item>
      <title>Why Use Sass?</title>
      <dc:creator>Jishnu Prasad Samal</dc:creator>
      <pubDate>Sat, 29 Jul 2023 08:42:57 +0000</pubDate>
      <link>https://forem.com/jishnupsamal/why-use-sass-57h</link>
      <guid>https://forem.com/jishnupsamal/why-use-sass-57h</guid>
      <description>&lt;p&gt;Syntactically Awesome Style Sheets, or SASS for short, is preprocessor for CSS. It claims to be the most mature, stable, and powerful professional grade CSS extension language in the world. It was initially designed by &lt;em&gt;Hampton Catlin&lt;/em&gt; and developed by &lt;em&gt;Natalie Weizenbaum&lt;/em&gt; in 2016. But what does it mean to be a CSS preprocessor? According to MDN, CSS preprocessor is a program that lets you generate CSS from the preprocessor's own unique syntax. There are several CSS preprocessors available. Some of which include -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sass-lang.com/"&gt;SASS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lesscss.org/"&gt;LESS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stylus-lang.com/"&gt;Stylus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WJEiKidY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1690572496/jishnupsamal/uploads/2023/sass_ynhkfx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WJEiKidY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1690572496/jishnupsamal/uploads/2023/sass_ynhkfx.png" alt="Sass" width="640" height="480"&gt;&lt;/a&gt;&lt;em&gt;Sass&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now coming to SASS, it is the most popular CSS preprocessor. It is also used by &lt;a href="https://getbootstrap.com"&gt;Bootstrap&lt;/a&gt; which is undoubtedly one of the most popular and widely used frontend frameworks available out there. It has 14.6k stars on &lt;a href="https://github.com/sass/sass"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of SASS over CSS
&lt;/h2&gt;

&lt;p&gt;CSS is an amazing language, developed in the early days of web, it revolutionized the way websites were designed and styled. It allowed developers to design beautiful and eye-catching websites.&lt;/p&gt;

&lt;p&gt;But when the web grew older and CSS files became larger and unmaintainable, we felt the need for a more advanced and modular solution and that's why the concept of CSS preprocessors came to life. SASS makes it easier for developers and web designers to style websites more efficiently while keeping it maintainable and modular.&lt;/p&gt;

&lt;p&gt;Moreover, SASS is fully compatible with CSS. This means that all the features which can be used in CSS, can also be used in SASS. Additionally, SASS has some more features which CSS doesn't have like CSS nesting, mixins and functions.&lt;/p&gt;

&lt;p&gt;This is a simple CodePen demonstrating SASS Nesting.&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/jishnupsamal/embed/MWzbxxN?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Sass is compiled to CSS as the browser can't parse Sass natively. Sass has another amazing feature called &lt;em&gt;partial files&lt;/em&gt;. Partial files are special files in Sass which start with an underscore &lt;code&gt;(_)&lt;/code&gt;. These partial files are ignored by the Sass compiler and act like modules. These modules can then be imported into the main Sass file using &lt;code&gt;@use&lt;/code&gt;.  This allows developers to maintain large stylesheets effectively by dividing it into smaller and modular partial Sass files. The main Sass files can be then compiled into a single CSS file to provide styling to the website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dgDSsI4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1690572496/jishnupsamal/uploads/2023/web-design_db242g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dgDSsI4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1690572496/jishnupsamal/uploads/2023/web-design_db242g.jpg" alt="Web Designing" width="640" height="425"&gt;&lt;/a&gt;&lt;em&gt;Web Design by &lt;a href="https://www.pexels.com/photo/apple-laptop-notebook-office-39284/"&gt;Pixabay&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sass comes with six built-in modules namely, &lt;code&gt;sass:math&lt;/code&gt;, &lt;code&gt;sass:color&lt;/code&gt;,  &lt;code&gt;sass:list&lt;/code&gt;,  &lt;code&gt;sass:meta&lt;/code&gt;,  &lt;code&gt;sass:selector&lt;/code&gt; and  &lt;code&gt;sass:string&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sass:math&lt;/code&gt;: It contains several maths-related functions like &lt;code&gt;ceil&lt;/code&gt;, &lt;code&gt;floor&lt;/code&gt;, &lt;code&gt;round&lt;/code&gt;, &lt;code&gt;log&lt;/code&gt;, &lt;code&gt;sqrt&lt;/code&gt;, &lt;code&gt;sin&lt;/code&gt;, &lt;code&gt;tan&lt;/code&gt; and constants like &lt;code&gt;pi&lt;/code&gt;, &lt;code&gt;e&lt;/code&gt; and &lt;code&gt;epsilon&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sass:color&lt;/code&gt;: It contains various functions to manipulate colours like &lt;code&gt;scale&lt;/code&gt;, &lt;code&gt;adjust&lt;/code&gt;, &lt;code&gt;invert&lt;/code&gt;, &lt;code&gt;lighten&lt;/code&gt; and many more.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sass:list&lt;/code&gt;: It contains functions to manipulate lists like &lt;code&gt;append&lt;/code&gt;, &lt;code&gt;index&lt;/code&gt; and &lt;code&gt;length&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sass:meta&lt;/code&gt;: It contains functions that can help to customize the way Sass works.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sass:selector&lt;/code&gt;: As the name suggests, it has functions to get details about the css selectors used and manipulate them.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sass:string&lt;/code&gt;: It contains functions to manipulate string data type such as &lt;code&gt;index&lt;/code&gt;, &lt;code&gt;insert&lt;/code&gt;, &lt;code&gt;split&lt;/code&gt;, &lt;code&gt;to-upper-case&lt;/code&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Using Sass in JavaScript
&lt;/h2&gt;

&lt;p&gt;To use Sass in your project, you need to install the &lt;code&gt;sass&lt;/code&gt; package from NPM.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;npm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;sass&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, compile the Sass code to CSS using the command below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;sass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input.scss&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;output.css&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or if you want to watch a file for changes and compile all the changes to CSS immediately, you may use the &lt;code&gt;-w&lt;/code&gt; or &lt;code&gt;--watch&lt;/code&gt; flag, as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;sass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input.scss&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-w&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;output.css&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you can use the compiled CSS file in your html file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mgSX6eRF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1690572496/jishnupsamal/uploads/2023/node-js_kgmtsb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mgSX6eRF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1690572496/jishnupsamal/uploads/2023/node-js_kgmtsb.jpg" alt="NodeJS logo" width="640" height="427"&gt;&lt;/a&gt;&lt;em&gt;NodeJS by &lt;a href="https://www.pexels.com/photo/a-person-holing-a-sticker-in-close-up-photography-11035380/"&gt;RealToughCandy.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the way to use Sass in Vanilla JS. If you are using any meta framework like Gatsby or Next, for your project, you might not need to compile the Sass file yourself. You can directly use your Sass file because under the hood your meta framework compiles the Sass file for you.&lt;/p&gt;

&lt;p&gt;For example, if you are using NextJS, you can use Sass directly by making necessary changes to &lt;code&gt;next.config.js&lt;/code&gt;. For more details on this, please refer to the &lt;a href="https://nextjs.org/docs/app/building-your-application/styling/sass"&gt;official documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Syntaxes of Sass
&lt;/h2&gt;

&lt;p&gt;You must be wondering, what do I mean by &lt;strong&gt;syntaxes&lt;/strong&gt; here. And this is not a fancy heading.&lt;/p&gt;

&lt;p&gt;Sass (really) has two syntaxes. First one is the SCSS syntax, which is similar to CSS. It uses the file extension &lt;code&gt;.scss&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;&lt;span class="nc"&gt;.hero&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$button-height&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;_img&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;object-fit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;fill&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;_heading&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;18px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second one is the Sass syntax, and it uses the &lt;code&gt;.sass&lt;/code&gt; file extension. It was the original syntax of Sass and, the reason why Sass is called Sass. It uses indentation in place of curly braces, similar to python (if you are familiar with it) and omits the semicolon &lt;code&gt;;&lt;/code&gt;. The code above can be written in sass syntax as shown.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sas"&gt;&lt;code&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hero&lt;/span&gt; 
    &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;flex&lt;/span&gt;
    &lt;span class="n"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;relative&lt;/span&gt;
    &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;$&lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;
    &lt;span class="n"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;none&lt;/span&gt;

    &lt;span class="nv"&gt;&amp;amp;_img&lt;/span&gt;
        &lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;fill&lt;/span&gt;


    &lt;span class="nv"&gt;&amp;amp;_heading&lt;/span&gt; 
        &lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;18&lt;/span&gt;&lt;span class="n"&gt;px&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Both the syntax provide the same features. But generally, the SCSS syntax is more preferred as it has CSS-like, and hence, is easier for developers to adapt to this syntax.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Sass is a great option for designing large and complex systems. It makes the work of a web designer, a piece of cake.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XfU3IguA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1690572514/jishnupsamal/uploads/2023/light-bulbs_fb0pre.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XfU3IguA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1690572514/jishnupsamal/uploads/2023/light-bulbs_fb0pre.jpg" alt="Light Bulbs" width="640" height="427"&gt;&lt;/a&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@sigmund?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Sigmund&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/uNBYT-gizhU?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But since every tool has its own use case and limitation, similarly, Sass, too, is not profitable in certain uses cases. Like if you have a, really, small project, you may choose not to use Sass as it would take time to install and set up Sass.&lt;/p&gt;

&lt;p&gt;What do you think about the future of &lt;strong&gt;Sass&lt;/strong&gt;? Let me know in the comments.&lt;/p&gt;

&lt;p&gt;Hope you liked my post. Thank you for reading.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://jishnupsamal.me/blog/why-use-sass?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-use-sass-devto"&gt;jishnupsamal.me&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>sass</category>
      <category>design</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Build a Linear Regression Model</title>
      <dc:creator>Jishnu Prasad Samal</dc:creator>
      <pubDate>Mon, 10 Apr 2023 17:06:11 +0000</pubDate>
      <link>https://forem.com/jishnupsamal/build-a-simple-linear-regression-model-4715</link>
      <guid>https://forem.com/jishnupsamal/build-a-simple-linear-regression-model-4715</guid>
      <description>&lt;p&gt;Linear Regression is one of the oldest and widely used Machine Learning algorithm which is used to train a model against two variables - Independent Variable and Dependent (Target) Variable. If you wish to learn more about AI and Machine Learning, you may see my blog on &lt;a href="https://jishnupsamal.ml/blog/artificial-intelligence-the-future"&gt;Artificial Intelligence&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In this project, I will be training a model to predict Sports Sustainability. Sustainability in sports means conducting a sporting event that utilises environmentally friendly methods to reduce the negative impact on the environment. Just like every industry, sports has a supply chain issue. When enjoying sports like Cricket or Football, we tend to forget about environment. &lt;/p&gt;

&lt;p&gt;But we need to think beyond the tournament: who is making players’ kits and boots? Where is the water feeding the pitch coming from? How was the stadium built, and how is it maintained? What’s the impact of major tournaments like the Champions’ League or the Olympics, where hastily erected stadiums and hundreds of thousands of fans take over local areas?. Moreover, are certain actions – like disposable cups in stadiums, or the use of recycled fibres in kits – simply a sticking plaster over much wider issues across the entire supply chain? &lt;/p&gt;

&lt;p&gt;For this project we have a dataset containing data about the number of suppliers of sports goods and the corresponding carbon emissions from them (in metric tons). I am going to use &lt;a href="https://scikit-learn.org"&gt;Scikit-learn&lt;/a&gt; for training and evaluating the model. Before building the model, we need to analyse the data, for any errors or ambiguities, and identify the trends in the data. I will be using &lt;a href="https://pandas.pydata.org/"&gt;Pandas&lt;/a&gt; and &lt;a href="https://numpy.org/"&gt;Numpy&lt;/a&gt; for data analysis and &lt;a href="https://matplotlib.org/"&gt;Matplotlib&lt;/a&gt; as plotting library for plotting graphs and charts. So, without wasting any further time, let's jump right in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bootstrapping
&lt;/h2&gt;

&lt;p&gt;First, let's install and import the required packages as shown in the codeblock below.&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="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="n"&gt;matplotlib&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt; 
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt; 
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Data Analysis with Pandas
&lt;/h2&gt;

&lt;p&gt;With the project dependencies installed, let's move forward to import our dataset using pandas. In the first line, I have created the dataframe by importing dataset with &lt;code&gt;pd.read_csv()&lt;/code&gt; function and in the second line, I dropped the year column as it does not provide any relevant information for our model. This is an example dataset and has only 16 data points, but production models are trained on much larger datasets containing hundreds and thousands of data points.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/47add66952e24ad78656b37261f2be19?height=653" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;Then, we will get the columns using &lt;code&gt;df.columns&lt;/code&gt; and the shape of the dataset using &lt;code&gt;df.shape&lt;/code&gt;.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/6f03295e5fa247fd8862f4911e78ce4e?height=134.1875" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;



&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/1f2540fdbc064b7cac6a113828c1e165?height=134.1875" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Then, we will get information about the dataset using &lt;code&gt;df.info()&lt;/code&gt;. It gives us the columns of the dataset, non-null count which means the number of values in the column which are not null and the data type of the values in the column. &lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/19c79fe453fd400d91472d7b8f7c1d14?height=290.6875" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Then, I am going to analyze the mean, median, standard deviation, count, min and max and several percentages of the data using &lt;code&gt;df.describe()&lt;/code&gt;.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/6d1410f72c464752b5a62335dfb7c6ff?height=535" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Now, plot a scatter plot for the data points using pandas.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/9f009f07042140edbfe097a4ce6972f5?height=538" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Model Training
&lt;/h2&gt;

&lt;p&gt;Now, we have completed analyzing the data, so, we will begin with model training. Before starting with model training, we are going to import the required modules.&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="n"&gt;sklearn.model_selection&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;train_test_split&lt;/span&gt; 
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn.linear_model&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LinearRegression&lt;/span&gt; 
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn.metrics&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;r2_score&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mean_squared_error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mean_absolute_error&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;joblib&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now, we need to initialize two variables - &lt;code&gt;x&lt;/code&gt; which is our independent variable and &lt;code&gt;Y&lt;/code&gt; which is our dependent or target variable. &lt;code&gt;x&lt;/code&gt; contains the &lt;code&gt;Number of Suppliers&lt;/code&gt; feature and &lt;code&gt;Y&lt;/code&gt; contains the &lt;code&gt;Carbon Emissions from Suppliers (metric tons)&lt;/code&gt; which we need to predict.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/6e301a4f028f4ff1a671de61200f1260?height=645" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;Now, we will split our dataset into training data and testing data. In the code block below, we are &lt;code&gt;x&lt;/code&gt; to a &lt;code&gt;numpy&lt;/code&gt; array and then assigning one part to &lt;code&gt;x_train&lt;/code&gt; which is our training data from &lt;code&gt;x&lt;/code&gt; variable and another part to &lt;code&gt;y_train&lt;/code&gt; which is our training data from &lt;code&gt;Y&lt;/code&gt; variable. Similarly, we are creating &lt;code&gt;x_test&lt;/code&gt; and &lt;code&gt;y_test&lt;/code&gt; which holds our testing data. The size of testing dataframe is &lt;code&gt;0.2&lt;/code&gt; or approximately &lt;code&gt;20%&lt;/code&gt; of the original dataset.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/9616e92cc3a74dadbc7c1d0aca33684d?height=363.25" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Now, finally, it's time to fit the data into the model. To do so, first, we need to initialize the &lt;code&gt;LinearRegression()&lt;/code&gt; class imported from &lt;code&gt;scikit-learn&lt;/code&gt; with a &lt;code&gt;model&lt;/code&gt; variable. Then we use &lt;code&gt;model.fit()&lt;/code&gt; to fit the data and our model is ready to use.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/c22bb707d9834956ab3a643e0dcd0122?height=191.34375" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Now, let's make predictions using the model built in the previous step. Here, we need to pass the &lt;code&gt;Number of Suppliers&lt;/code&gt; as a &lt;code&gt;numpy&lt;/code&gt; array into the &lt;code&gt;model.predict()&lt;/code&gt; function. And we get the &lt;code&gt;Carbon Emission in metric tons&lt;/code&gt; as our output.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/7038028590fb4e47a900348d5f6c3ea7?height=134.1875" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Model Evaluation
&lt;/h2&gt;

&lt;p&gt;We have successfully built our model from scratch in the previous step. But, now, we need to evaluate our model's accuracy and performance. This is a very crucial step in Machine Learning Lifecycle. So, now let's begin with model evaluation. In model training stage, we created &lt;code&gt;x_test&lt;/code&gt; and &lt;code&gt;y_test&lt;/code&gt; and now we will be using those two to test the model. &lt;/p&gt;

&lt;p&gt;I will be creating an array named &lt;code&gt;y_pred&lt;/code&gt; which will contain predicted values of data points of &lt;code&gt;x_test&lt;/code&gt;.&lt;/p&gt;



&lt;p&gt;We will be using score, intercept, coefficient and R² score. The score of the model is 99.671% at the time of publishing this blog, which is quite good. R² score is quite fine.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/bde2413106204e198c824a2a9156fd0f?height=338.125" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Now, I am going to compare the values of &lt;code&gt;y_test&lt;/code&gt; which is the actual value of the data points and the values of &lt;code&gt;y_pred&lt;/code&gt; which are the predicted values. I will do this by plot a graph of Actual vs Predicted values.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/aa7b09468ccc4a4e811b07aa8ba0c397?height=755" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Saving the Model
&lt;/h2&gt;

&lt;p&gt;Now, we need to save our trained model for future use. We will pickle the model using &lt;code&gt;joblib&lt;/code&gt; package.&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="n"&gt;def&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;&lt;span class="nf"&gt;save_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="err"&gt;    &lt;/span&gt;&lt;span class="n"&gt;joblib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;model.jlib&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;wb+&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="nf"&gt;save_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now, we have saved our model. Let's try out the saved model by loading it as &lt;code&gt;saved_model&lt;/code&gt; and then make predictions using the saved model.&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="n"&gt;saved_model&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;&lt;span class="n"&gt;joblib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;model.jlib&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://embed.deepnote.com/63de8c65-d4af-49f5-ad1b-f6c3cc845557/40d5495aa49d45fd987753bf3d581304/e66df9d951d242f487eea56b83b5d7a8?height=134.1875" rel="noopener noreferrer"&gt;
      embed.deepnote.com
    &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;As we can see above, the saved model gives the same output as the original model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;In this blog, I demonstrated how to build a Linear Regression model to predict the sustainability in sports. We used &lt;strong&gt;Pandas&lt;/strong&gt; and &lt;strong&gt;Matplotlib&lt;/strong&gt; to analyze the data and then used &lt;strong&gt;Scikit-learn&lt;/strong&gt; to train the model. After Model Evaluation, the last step is Model Deployment. I will demonstrate deploying ML models on &lt;strong&gt;Hugging Face Spaces&lt;/strong&gt; using &lt;strong&gt;Gradio&lt;/strong&gt; Framework in some other blog. I have already deployed this model, so if you want to try it out you may check out the link below.&lt;br&gt;
Deployed Model - &lt;a href="https://jishnupsamal-sports-sustainability.hf.space/"&gt;https://jishnupsamal-sports-sustainability.hf.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://jishnupsamal.me/blog/build-a-linear-regression-model?utm_source=republishing&amp;amp;utm_medium=blog&amp;amp;utm_campaign=linear-regression-model"&gt;jishnupsamal.me&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Practical KISS</title>
      <dc:creator>Jishnu Prasad Samal</dc:creator>
      <pubDate>Tue, 21 Feb 2023 17:33:59 +0000</pubDate>
      <link>https://forem.com/jishnupsamal/practical-kiss-590n</link>
      <guid>https://forem.com/jishnupsamal/practical-kiss-590n</guid>
      <description>&lt;p&gt;KISS is a software design principle, which stands for Keep it Simple, Stupid. But it might sound offensive to some people, so I will prefer &lt;strong&gt;Keep it Stupid Simple&lt;/strong&gt;. KISS is based on the principle of minimalism and simplicity. The acronym - KISS is a design principle noted by the U.S. Navy in 1960. The acronym was reportedly coined by late &lt;a href="https://en.wikipedia.org/wiki/Kelly_Johnson_(engineer)"&gt;Kelly Johnson&lt;/a&gt;, lead engineer at the &lt;a href="https://en.wikipedia.org/wiki/Skunk_Works"&gt;Lockheed Skunk Works&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This principle emphasizes that systems perform better when they are made simple. This concept does not only apply to software design, or software development, but can be applied to any industry. Now, simplicity does not means undermining the capability of a system. It just means that every system or program should be made as simple to understand as possible, while maintaining its features and capacity to perform tasks. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w9f0pwuh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1676997149/jishnupsamal/uploads/2023/keep-it-simple-cookies_ajbg1t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w9f0pwuh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1676997149/jishnupsamal/uploads/2023/keep-it-simple-cookies_ajbg1t.jpg" alt="Keep It Simple Cookies" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Everything should be made as simple as possible, but not simpler.&lt;/strong&gt;&lt;br&gt;
~ Albert Einstein&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  KISS in Practice
&lt;/h2&gt;

&lt;p&gt;Keeping simplicity in mind, KISS can have several applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Break down a problem into several small problems.&lt;/li&gt;
&lt;li&gt;Don't think that simplicity is associated with stupidity. Sometimes, the simplest solutions are the most correct solutions.&lt;/li&gt;
&lt;li&gt;Break tasks into several small sub-tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nvz52ruT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1676997585/jishnupsamal/uploads/2023/balance_jxgb9e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nvz52ruT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1676997585/jishnupsamal/uploads/2023/balance_jxgb9e.jpg" alt="Photo by Anthony" width="800" height="1200"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.pexels.com/photo/close-up-photography-of-gray-cairn-stone-133372/"&gt;&lt;em&gt;Photo by Anthony&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't create complicated solutions; you might yourself end up getting confused with what you have created.&lt;/li&gt;
&lt;li&gt;Simple systems are easier to scale and manage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Engineers tend to overcomplicate systems and they end up adding features and capabilities which are not required by the end user of the product. Systems work better when kept sample, rather than made complicated. Efforts should be made to achieve efficient results with minimum complexity and maximum simplicity. This is the whole crux of the KISS principle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DJY1lna_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1676998373/jishnupsamal/uploads/2023/pexels-kei-scampa-4564088_eetpz7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DJY1lna_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1676998373/jishnupsamal/uploads/2023/pexels-kei-scampa-4564088_eetpz7.jpg" alt="Simplicity in Engineering" width="800" height="1424"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://www.pexels.com/photo/futuristic-geometric-building-against-overcast-sky-4564088/"&gt;Kei Scampa&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://jishnupsamal.me/blog/practical-kiss"&gt;Jishnu's Blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>designpatterns</category>
      <category>todayilearned</category>
      <category>community</category>
    </item>
    <item>
      <title>Artificial Intelligence - The Future</title>
      <dc:creator>Jishnu Prasad Samal</dc:creator>
      <pubDate>Sat, 03 Dec 2022 08:37:15 +0000</pubDate>
      <link>https://forem.com/jishnupsamal/artificial-intelligence-the-future-ckk</link>
      <guid>https://forem.com/jishnupsamal/artificial-intelligence-the-future-ckk</guid>
      <description>&lt;p&gt;Artificial Intelligence has been there for quite some time. But it has been gaining popularity rapidly in the past few years. So what is Artificial Intelligence? Artificial Intelligence, or AI, is the ability of machines or systems to mimic human intelligence and cognitive behaviour to perform tasks. Artificial Intelligence can be categorized into Machine Learning, which can further be classified into Deep Learning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4IgCgXz9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1670054234/jishnupsamal/uploads/2022/ai-levels_irwxdm.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4IgCgXz9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1670054234/jishnupsamal/uploads/2022/ai-levels_irwxdm.svg" alt="Levels of Artificial Intelligence" width="475" height="470"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Levels of Artificial Intelligence&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Intro to Artificial Intelligence
&lt;/h2&gt;

&lt;p&gt;Artificial Intelligence further has three components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Science&lt;/strong&gt; - Data science uses maths and statistics, specialized programming, and advanced analytics to discover trends and patterns, and uses the discovered trends to train AI models which can predict future trends.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Computer Vision&lt;/strong&gt; - Computer Vision is the field of Artificial Intelligence that enables computers to derive meaningful information from visual data. Computer Vision enables computers to see and visualize the world.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural Language Processing&lt;/strong&gt; - Natural Language Processing enables computers to understand the text and spoken words similar to human beings. It includes speech recognition, speech synthesis, chatbots, and sentiment analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Narrow AI vs General AI
&lt;/h2&gt;

&lt;p&gt;Now, on the basis of tasks, artificial intelligence can perform, it can be categorized into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Narrow AI or Weak AI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;General AI or Strong AI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Narrow Artificial Intelligence
&lt;/h3&gt;

&lt;p&gt;Narrow AI is a type of AI designed to perform specific tasks. The AI that exists around us today is Narrow AI. A Narrow AI designed to perform a specific task cannot perform any other task. Narrow AI also lacks self-awareness and human consciousness.&lt;/p&gt;

&lt;h3&gt;
  
  
  General Artificial Intelligence
&lt;/h3&gt;

&lt;p&gt;General Artificial Intelligence does not exist and is fictional to this date. General AI creates intelligent machines that are indistinguishable from the human mind. General AI is under development and researchers are working on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Machine Learning
&lt;/h2&gt;

&lt;p&gt;Machine Learning is a branch of Artificial Intelligence that focuses on the use of data and algorithms to imitate the way that humans learn, gradually improving its accuracy. Machine learning algorithms build a model based on training data, in order to make predictions or make decisions without being explicitly programmed to do so.&lt;/p&gt;

&lt;h3&gt;
  
  
  Algorithms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Linear Regression&lt;/li&gt;
&lt;li&gt;Logistic Regression&lt;/li&gt;
&lt;li&gt;Support Vector Machine&lt;/li&gt;
&lt;li&gt;Naive Bayes&lt;/li&gt;
&lt;li&gt;K-Nearest Neighbours&lt;/li&gt;
&lt;li&gt;Decision Tree Classifier&lt;/li&gt;
&lt;li&gt;Random Forest Classifier&lt;/li&gt;
&lt;li&gt;K-Means Clustering&lt;/li&gt;
&lt;li&gt;DBSCAN Clustering&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deep Learning
&lt;/h2&gt;

&lt;p&gt;Deep Learning is a subfield of Machine Learning which is based on artificial neural networks with representation learning. It is essentially a neural network with three or more layers. Deep learning duplicates the behaviour of the human brain. Most deep learning models use neural networks, that's why these models are also known as deep learning neural networks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Bad-Zer1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1670054471/jishnupsamal/uploads/2022/neural_network_ypqqxl.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Bad-Zer1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1670054471/jishnupsamal/uploads/2022/neural_network_ypqqxl.webp" alt="Neural Network" width="800" height="568"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: IBM&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Algorithms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Convolutional Neural Networks (CNNs)&lt;/li&gt;
&lt;li&gt;Recurrent Neural Networks (RNN)&lt;/li&gt;
&lt;li&gt;Long Short Term Memory Networks (LSTMs)&lt;/li&gt;
&lt;li&gt;Generative Adversarial Networks (GANs)&lt;/li&gt;
&lt;li&gt;Multilayer Perceptrons (MLPs)&lt;/li&gt;
&lt;li&gt;Radial Basis Function Networks (RBFNs)&lt;/li&gt;
&lt;li&gt;Self Organizing Maps (SOMs)&lt;/li&gt;
&lt;li&gt;Autoencoders&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Types of Learning
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Supervised Learning&lt;/strong&gt; - Supervised Learning is a type of learning in which labelled data is provided to train the model. The model uses labelled data to learn and make predictions. Some methods used in supervised learning include neural networks, naive bayes, linear regression, logistic regression, random forest, and support vector machine (SVM).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unsupervised Learning&lt;/strong&gt; - Unsupervised learning is a type of learning that uses unlabelled data to train the model. The model learns from the data, discovers the patterns, trends, and features in the data, and returns the output. Principal component analysis (PCA) and singular value decomposition (SVD), neural networks, k-means clustering, and probabilistic clustering methods are some common algorithms used for unsupervised learning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reinforcement Learning&lt;/strong&gt; - Reinforcement Learning is a type of learning which trains a machine to take suitable actions and maximize its rewards in a particular situation. In this learning technique, there is no predefined target variable. It works on a reward-based system. The model is rewarded for every correct prediction it makes. Q-learning, state-Action-Reward-State-Action (SARSA), and Deep Q-network are some commonly used algorithms for reinforcement learning.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Artificial Intelligence is a groundbreaking technology. It has enormous potential to create a better and brighter future for all, for our planet. It should be used very carefully and judiciously. Artificial Intelligence enables us to achieve the goals that were considered arduous. It is certain that AI will replace many jobs that require human attributes and labor, but it also has got great job opportunities. According to &lt;a href="https://www.bls.gov/emp/tables/fastest-growing-occupations.htm"&gt;US Bureau of Labor Statistics&lt;/a&gt;, employment growth of 35.8% growth is expected in Data Science, which is fundamental to AI, by 2031.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://jishnupsamal.me/blog/artificial-intelligence-the-future"&gt;jishnupsamal.me&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>deeplearning</category>
    </item>
    <item>
      <title>Top 10 Backend Frameworks in 2022</title>
      <dc:creator>Jishnu Prasad Samal</dc:creator>
      <pubDate>Sat, 22 Oct 2022 09:18:42 +0000</pubDate>
      <link>https://forem.com/jishnupsamal/top-10-backend-frameworks-in-2022-39dn</link>
      <guid>https://forem.com/jishnupsamal/top-10-backend-frameworks-in-2022-39dn</guid>
      <description>&lt;p&gt;A web app consists of two layers - &lt;strong&gt;frontend&lt;/strong&gt; and &lt;strong&gt;backend&lt;/strong&gt;. Frontend refers to the presentational layer which is visible to the end users. It includes &lt;strong&gt;structure, style and behaviour&lt;/strong&gt; of different elements on the screen. Backend, also known as server-side layer, refers to the layer which runs on the server and is not visible to the users, and holds the data required by the frontend. It includes the server-side logic of the web app, like APIs, app security, authentication and authorization.&lt;/p&gt;

&lt;p&gt;In this blog, I am going to talk about the &lt;strong&gt;Backend&lt;/strong&gt; layer. The most common languages used for building backend are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;Rails&lt;/li&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;C#&lt;/li&gt;
&lt;li&gt;Go&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a bunch of frameworks built on the top of these languages which make backend development easier and smoother. I will be talking about some of the most popular frameworks used worldwide. So, without any delay, let's jump right into it!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Django&lt;/li&gt;
&lt;li&gt;Ruby on Rails&lt;/li&gt;
&lt;li&gt;Laravel&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;Spring&lt;/li&gt;
&lt;li&gt;&lt;a href="//#asp.net-core"&gt;ASP.NET Core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Flask&lt;/li&gt;
&lt;li&gt;CakePHP&lt;/li&gt;
&lt;li&gt;
FastAPI

&lt;ol&gt;
&lt;li&gt;Fastify&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Django
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hzJjoJrH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421132/jishnupsamal/uploads/2022/django-logo_ofdjsv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hzJjoJrH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421132/jishnupsamal/uploads/2022/django-logo_ofdjsv.png" alt="Django" width="800" height="364"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://djangoproject.com"&gt;Django Software Foundation&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://djangoproject.com"&gt;Django&lt;/a&gt; is a high-level Python web framework. It is an Model-View-Template(MVT)-based, open-source web application development framework. It was released in 2005. It comes with batteries included. Some popular websites using Django are &lt;a href="https://instagram.com"&gt;Instagram&lt;/a&gt;, &lt;a href="https://mozilla.org"&gt;Mozilla&lt;/a&gt;, &lt;a href="https://disqus.com"&gt;Disqus&lt;/a&gt;, &lt;a href="https://bitbucket.org"&gt;Bitbucket&lt;/a&gt;, &lt;a href="https://nextdoor.com"&gt;Nextdoor&lt;/a&gt; and &lt;a href="https://clubhouse.com"&gt;Clubhouse&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Developer-friendly&lt;/li&gt;
&lt;li&gt;Security built-in&lt;/li&gt;
&lt;li&gt;Scalable&lt;/li&gt;
&lt;li&gt;Versatile&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Relatively slower&lt;/li&gt;
&lt;li&gt;Not for smaller projects&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Ruby on Rails
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c--G5vi8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421068/jishnupsamal/uploads/2022/Ruby_On_Rails_Logo_fyxbhy.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c--G5vi8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421068/jishnupsamal/uploads/2022/Ruby_On_Rails_Logo_fyxbhy.svg" alt="Ruby on Rails" width="411" height="155"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://commons.wikimedia.org/wiki/File:Ruby_On_Rails_Logo.svg"&gt;Wikimedia Commons&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;, popularly called Rails, is web application framework written in Ruby programming language. It is based on Model-View-Controller(MVC)-based full-stack web development framework. It is based on the philosophy of Convention over Configuration (CoC), Don't Repeat Yourself (DRY) and the ActiveRecord pattern. Some popular websites built using Ruby on Rails are &lt;a href="https://airbnb.com"&gt;Airbnb&lt;/a&gt;, &lt;a href="https://bloomberg.com"&gt;Bloomberg&lt;/a&gt;, &lt;a href="https://crunchbase.com"&gt;Crunchbase&lt;/a&gt;, &lt;a href="https://dribbble.com"&gt;Dribbble&lt;/a&gt;, &lt;a href="https://github.com"&gt;GitHub&lt;/a&gt; and &lt;a href="https://shopify.com"&gt;Shopify&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Rapid Development&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Easy Frontend Integration&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Lack of proper documentation&lt;/li&gt;
&lt;li&gt;Slow runtime speed&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Laravel
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cTin0OfO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421181/jishnupsamal/uploads/2022/laravel-logo_wv1ug3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cTin0OfO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421181/jishnupsamal/uploads/2022/laravel-logo_wv1ug3.png" alt="Laravel" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://github.com/laravel/art"&gt;Laravel&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://laravel.com/"&gt;Laravel&lt;/a&gt; is a web app framework written in PHP. It is open source and is based on Model-View-Controller (MVC) architectural pattern. It was released in 2011. Famous websites built using Laravel are &lt;a href="https://www.invoiceninja.com/"&gt;Invoice Ninja&lt;/a&gt;, &lt;a href="https://alison.com/"&gt;Alison&lt;/a&gt;, &lt;a href="https://www.barchart.com/"&gt;Barchart&lt;/a&gt;, &lt;a href="https://myrank.co.in/"&gt;MyRank&lt;/a&gt;, &lt;a href="https://alphacoders.com/"&gt;AlphaCoders&lt;/a&gt;, &lt;a href="https://laracasts.com/"&gt;Laracasts&lt;/a&gt; and &lt;a href="https://laravel.io/"&gt;Laravel.io&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Excellent Queue Management&lt;/li&gt;
&lt;li&gt;Easy Mail Integration&lt;/li&gt;
&lt;li&gt;Expansive Documentation&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Slow Development&lt;/li&gt;
&lt;li&gt;High Learning Curve&lt;/li&gt;
&lt;li&gt;Less community support&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Express
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6u7SkgZM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421132/jishnupsamal/uploads/2022/Expressjs_ordtm5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6u7SkgZM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421132/jishnupsamal/uploads/2022/Expressjs_ordtm5.png" alt="Express" width="465" height="141"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://commons.wikimedia.org/wiki/File:Expressjs.png"&gt;Wikimedia Commons&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://expressjs.com"&gt;Express&lt;/a&gt;, or Express.js, is a Node.js based web framework written in JavaScript. It is the standard web framework for Node.js. Express is popularly used in JavaScript development stacks like MEAN, MERN and MEVN along with MongoDB and JavaScript frontend frameworks. Some popular websites using Express are &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;, &lt;a href="https://mdbootstrap.com"&gt;MDBootstrap&lt;/a&gt;, &lt;a href="https://paypal.com"&gt;Paypal&lt;/a&gt;, &lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;, &lt;a href="https://atlassian.com"&gt;Atlassian&lt;/a&gt;, &lt;a href="https://shopee.co.id"&gt;Shopee&lt;/a&gt; and &lt;a href="https://hub.docker.com"&gt;Docker Hub&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;li&gt;Less Development time&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Performance issues&lt;/li&gt;
&lt;li&gt;Problems with callbacks&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Spring
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0k-fNRNH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421069/jishnupsamal/uploads/2022/Spring_Framework_Logo_mfydkf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0k-fNRNH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421069/jishnupsamal/uploads/2022/Spring_Framework_Logo_mfydkf.png" alt="Spring" width="800" height="206"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://commons.wikimedia.org/wiki/File:Spring_Framework_Logo_2018.svg"&gt;Wikimedia Commons&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://spring.io"&gt;Spring&lt;/a&gt; is a open source web application framework written in Java programming language. It is based on Model-View-Controller (MVC) architecture. It is one of the most widely used frameworks for developing web applications.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;Flexible &amp;amp; Light Weight&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;High Learning Curve&lt;/li&gt;
&lt;li&gt;Lots of XML&lt;/li&gt;
&lt;li&gt;Lack of documentation&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  ASP.NET Core
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vxccRcH6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421181/jishnupsamal/uploads/2022/NET_Core_Logo_caevil.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vxccRcH6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421181/jishnupsamal/uploads/2022/NET_Core_Logo_caevil.png" alt="ASP.NET Core" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://commons.wikimedia.org/wiki/File:.NET_Core_Logo.svg"&gt;Wikimedia Commons&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/en-us/learn/aspnet/what-is-aspnet"&gt;ASP.NET&lt;/a&gt; is a popular, free and open-source web-development framework for building web apps on the &lt;a href="https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet"&gt;.NET platform&lt;/a&gt;. It is successor to ASP.NET. It is based on Model-View-Controller (MVC) pattern. It is developed by Microsoft. Some popular websites using ASP.NET Core are &lt;a href="https://c-sharpcorner.com"&gt;C# Corner&lt;/a&gt;, &lt;a href="https://code.visualstudio.com/"&gt;Visual Studio Code&lt;/a&gt;, &lt;a href="https://namecheap.com"&gt;Namecheap&lt;/a&gt; and &lt;a href="https://mxtoolbox.com"&gt;mxtoolbox&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;Flexible&lt;/li&gt;
&lt;li&gt;Scalable&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;High Learning Curve&lt;/li&gt;
&lt;li&gt;Windows-based Development Tools&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Flask
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SKQJMYrO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421069/jishnupsamal/uploads/2022/Flask_logo_yeh3vg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SKQJMYrO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421069/jishnupsamal/uploads/2022/Flask_logo_yeh3vg.png" alt="Flask" width="800" height="313"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://commons.wikimedia.org/wiki/File:Flask_logo.svg"&gt;Wikimedia Commons&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flask.palletsprojects.com"&gt;Flask&lt;/a&gt; is a micro web framework written in Python. It is called a micro framework because it does has in-built support for database, form validation, authentication and authorization. It is a minimalistic web framework sufficient for small and simple projects. It is the second most popular web framework in Python community after Django. Some popular apps using Flask are  &lt;a href="https://pinterest.com"&gt;Pinterest&lt;/a&gt; and &lt;a href="https://linkedin.com"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Minimalistic&lt;/li&gt;
&lt;li&gt;Lightweight&lt;/li&gt;
&lt;li&gt;Scalable and Flexible&lt;/li&gt;
&lt;li&gt;Expansive Documentation&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Not suitable for large projects&lt;/li&gt;
&lt;li&gt;High Maintenance Costs&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  CakePHP
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gve3Y749--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421132/jishnupsamal/uploads/2022/cakephp_logo_zb8xbq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gve3Y749--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421132/jishnupsamal/uploads/2022/cakephp_logo_zb8xbq.jpg" alt="CakePHP" width="750" height="250"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://cakephp.org/logos"&gt;CakePHP&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cakephp.org/"&gt;CakePHP&lt;/a&gt; is a Model-View-Controller (MVC) based open source web application framework written in PHP. It uses software design patterns like ActiveRecord, Convention over Configuration (CoC), Association Data Mapping and Front Controller. Some websites using CakePHP are &lt;a href="https://coconala.com"&gt;coconala&lt;/a&gt; and &lt;a href="https://goodfirms.co"&gt;GoodFirms&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Flexible&lt;/li&gt;
&lt;li&gt;Better Queue Support&lt;/li&gt;
&lt;li&gt;Easy to Learn&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Lack of Documentation&lt;/li&gt;
&lt;li&gt;Not suited for large websites&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  FastAPI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w4JWV-8r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421133/jishnupsamal/uploads/2022/FastAPI_logo_j8tzyq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w4JWV-8r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421133/jishnupsamal/uploads/2022/FastAPI_logo_j8tzyq.png" alt="FastAPI" width="800" height="289"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://commons.wikimedia.org/wiki/File:FastAPI_logo.png"&gt;Wikimedia Commons&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fastapi.tiangolo.com"&gt;FastAPI&lt;/a&gt; is a free and open source web framework, mainly used for building REST APIs, in Python. It is based on API standards like &lt;a href="https://www.openapis.org/"&gt;OpenAPI&lt;/a&gt; and &lt;a href="https://json-schema.org/"&gt;JSON Schema&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Robust &amp;amp; Fast&lt;/li&gt;
&lt;li&gt;Easy to Learn&lt;/li&gt;
&lt;li&gt;Standard-based&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;No singleton in Dependency Injection&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Fastify
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IWeFL9Wd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421068/jishnupsamal/uploads/2022/fastify_logo_cnt3cf.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IWeFL9Wd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/jishnupsamal/image/upload/v1666421068/jishnupsamal/uploads/2022/fastify_logo_cnt3cf.svg" alt="Fastify" width="800" height="246"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a href="https://github.com/fastify/graphics"&gt;Fastify&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Fastify is a web framework written in JavaScript. It is focused on better developer experience with the least overhead and a powerful plugin architecture. It is one of the fastest web frameworks. It is inspired by Express and Hapi.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Flexible&lt;/li&gt;
&lt;li&gt;Easy Development&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Certain third party libraries are not supported like passport.js and websocket.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;There are many backend frameworks other than those mentioned above. No framework is the best. It, really, depends on the project you are working. For example, if you want to deploy a Machine Learning model, I would recommend using microframework like Flask or FastAPI for it. Likewise, if you want to build an ERP portal, then I would recommend using Django or Ruby on Rails or any other full stack framework of your choice.&lt;/p&gt;

&lt;p&gt;Which web framework do you use? Do let me know in the comments.&lt;/p&gt;

&lt;p&gt;Thank you for reading my blog. Hope you liked it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://jishnupsamal.me/blog/top-10-backend-frameworks-in-2022?utm_source=dev.to&amp;amp;utm_medium=blog&amp;amp;utm_campaign=jishnu%27s+blog"&gt;jishnupsamal.me&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>backend</category>
      <category>beginners</category>
      <category>api</category>
    </item>
  </channel>
</rss>
